From 9baf7a7b467331dbbff92de78c5bab9107edfbec Mon Sep 17 00:00:00 2001 From: wonu606 Date: Tue, 18 Jul 2023 15:21:56 +0900 Subject: [PATCH 01/37] =?UTF-8?q?rename:=20=EB=94=94=EB=A0=89=ED=86=A0?= =?UTF-8?q?=EB=A6=AC=20=EA=B5=AC=EC=A1=B0=20=EB=B0=8F=20=ED=8C=8C=EC=9D=BC?= =?UTF-8?q?=EB=AA=85=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../VoucherManagerCommandLineRunner.java | 12 ++-- .../cableadapter}/ConsoleMenu.java | 2 +- .../cableadapter/FrontCableAdapter.java | 59 +++++++++++++++++ .../consoleio}/AbstractConsoleIO.java | 4 +- .../consoleio}/ConsoleInput.java | 2 +- .../consoleio}/ConsolePrinter.java | 2 +- .../concreate}/CustomerConsoleIO.java | 7 ++- .../consoleio/concreate/FrontConsoleIo.java} | 11 ++-- .../concreate}/VoucherConsoleIO.java | 7 ++- .../CustomerControllerCable.java} | 10 +-- .../VoucherControllerCable.java} | 18 +++--- .../controllercable}/menu/CustomerMenu.java | 2 +- .../controllercable}/menu/VoucherMenu.java | 2 +- .../FrontConsoleInterface.java | 63 ------------------- .../controller/CustomerController.java | 15 ++--- .../controller/VoucherController.java | 14 ++--- .../CustomerVoucherWalletResultSet.java | 21 ------- .../domain/customer/Customer.java | 12 ++-- .../EmailAddress.java => email/Email.java} | 8 +-- .../EmailDto.java} | 6 +- .../VoucherWallet.java} | 16 ++--- .../voucherwallet/VoucherWalletDto.java | 27 ++++++++ .../VoucherWalletResultSet.java} | 6 +- .../customer/CustomerRepository.java | 8 +-- .../customer/CustomerResultSetRepository.java | 8 +-- .../JdbcCustomerResultSetRepository.java | 18 +++--- .../customer/MappingCustomerRepository.java | 16 ++--- .../CustomerVoucherWalletRepository.java | 17 ----- .../JdbcVoucherWalletRepository.java} | 20 +++--- .../VoucherWalletRepository.java | 17 +++++ .../service/customer/CustomerService.java | 18 +++--- .../CustomerVoucherWalletService.java | 49 --------------- .../{ => service}/util/UUIDGenerator.java | 2 +- .../service/voucher/VoucherFactory.java | 2 +- .../voucherwallet/VoucherWalletService.java | 40 ++++++++++++ .../src/main/resources/application.properties | 8 +-- voucher-manager/src/main/resources/schema.sql | 24 ------- .../VoucherControllerCableTest.java} | 13 ++-- .../domain/customer/CustomerTest.java | 8 +-- .../{EmailAddressTest.java => EmailTest.java} | 10 +-- .../JdbcCustomerResultSetRepositoryTest.java | 34 +++++----- .../MappingCustomerRepositoryTest.java | 20 +++--- .../voucher/MappingVoucherRepositoryTest.java | 18 +++--- .../JdbcVoucherWalletRepositoryTest.java} | 32 +++++----- .../service/voucher/VoucherFactoryTest.java | 2 +- voucher-manager/src/test/resources/schema.sql | 24 +++++++ 46 files changed, 366 insertions(+), 368 deletions(-) rename voucher-manager/src/main/java/com/wonu606/vouchermanager/{menu => console/cableadapter}/ConsoleMenu.java (93%) create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/console/cableadapter/FrontCableAdapter.java rename voucher-manager/src/main/java/com/wonu606/vouchermanager/{io => console/consoleio}/AbstractConsoleIO.java (88%) rename voucher-manager/src/main/java/com/wonu606/vouchermanager/{io => console/consoleio}/ConsoleInput.java (93%) rename voucher-manager/src/main/java/com/wonu606/vouchermanager/{io => console/consoleio}/ConsolePrinter.java (88%) rename voucher-manager/src/main/java/com/wonu606/vouchermanager/{io => console/consoleio/concreate}/CustomerConsoleIO.java (78%) rename voucher-manager/src/main/java/com/wonu606/vouchermanager/{io/FrontConsoleIO.java => console/consoleio/concreate/FrontConsoleIo.java} (54%) rename voucher-manager/src/main/java/com/wonu606/vouchermanager/{io => console/consoleio/concreate}/VoucherConsoleIO.java (82%) rename voucher-manager/src/main/java/com/wonu606/vouchermanager/{consoleInterface/CustomerConsoleInterface.java => console/controllercable/CustomerControllerCable.java} (88%) rename voucher-manager/src/main/java/com/wonu606/vouchermanager/{consoleInterface/VoucherConsoleInterface.java => console/controllercable/VoucherControllerCable.java} (80%) rename voucher-manager/src/main/java/com/wonu606/vouchermanager/{ => console/controllercable}/menu/CustomerMenu.java (92%) rename voucher-manager/src/main/java/com/wonu606/vouchermanager/{ => console/controllercable}/menu/VoucherMenu.java (92%) delete mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/consoleInterface/FrontConsoleInterface.java delete mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/CustomerVoucherWallet/CustomerVoucherWalletResultSet.java rename voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/customer/{emailAddress/EmailAddress.java => email/Email.java} (86%) rename voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/customer/{emailAddress/EmailAddressDto.java => email/EmailDto.java} (50%) rename voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/{CustomerVoucherWallet/CustomerVoucherWallet.java => voucherwallet/VoucherWallet.java} (61%) create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/voucherwallet/VoucherWalletDto.java rename voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/{CustomerVoucherWallet/CustomerVoucherWalletDto.java => voucherwallet/VoucherWalletResultSet.java} (64%) delete mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customerVoucherWallet/CustomerVoucherWalletRepository.java rename voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/{customerVoucherWallet/JdbcCustomerVoucherWalletRepository.java => voucherwallet/JdbcVoucherWalletRepository.java} (67%) create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/VoucherWalletRepository.java delete mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customerVoucherWallet/CustomerVoucherWalletService.java rename voucher-manager/src/main/java/com/wonu606/vouchermanager/{ => service}/util/UUIDGenerator.java (79%) create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/VoucherWalletService.java delete mode 100644 voucher-manager/src/main/resources/schema.sql rename voucher-manager/src/test/java/com/wonu606/vouchermanager/{consoleInterface/VoucherConsoleInterfaceTest.java => console/controllercable/VoucherControllerCableTest.java} (86%) rename voucher-manager/src/test/java/com/wonu606/vouchermanager/domain/customer/{EmailAddressTest.java => EmailTest.java} (78%) rename voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/{customerVoucherWallet/JdbcCustomerVoucherWalletRepositoryTest.java => voucherwallet/JdbcVoucherWalletRepositoryTest.java} (80%) create mode 100644 voucher-manager/src/test/resources/schema.sql diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/VoucherManagerCommandLineRunner.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/VoucherManagerCommandLineRunner.java index fa5513d6f6..951c843b86 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/VoucherManagerCommandLineRunner.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/VoucherManagerCommandLineRunner.java @@ -1,21 +1,19 @@ package com.wonu606.vouchermanager; -import com.wonu606.vouchermanager.consoleInterface.CustomerConsoleInterface; -import com.wonu606.vouchermanager.consoleInterface.FrontConsoleInterface; -import com.wonu606.vouchermanager.consoleInterface.VoucherConsoleInterface; +import com.wonu606.vouchermanager.console.cableadapter.FrontCableAdapter; import org.springframework.boot.CommandLineRunner; import org.springframework.stereotype.Component; @Component public class VoucherManagerCommandLineRunner implements CommandLineRunner { - private final FrontConsoleInterface frontConsoleInterface; + private final FrontCableAdapter frontCableAdapter; - public VoucherManagerCommandLineRunner(FrontConsoleInterface frontConsoleInterface) { - this.frontConsoleInterface = frontConsoleInterface; + public VoucherManagerCommandLineRunner(FrontCableAdapter frontCableAdapter) { + this.frontCableAdapter = frontCableAdapter; } @Override public void run(String... args) { - frontConsoleInterface.run(); + frontCableAdapter.run(); } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/menu/ConsoleMenu.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/cableadapter/ConsoleMenu.java similarity index 93% rename from voucher-manager/src/main/java/com/wonu606/vouchermanager/menu/ConsoleMenu.java rename to voucher-manager/src/main/java/com/wonu606/vouchermanager/console/cableadapter/ConsoleMenu.java index b298f3092e..5f4aa0efc6 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/menu/ConsoleMenu.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/cableadapter/ConsoleMenu.java @@ -1,4 +1,4 @@ -package com.wonu606.vouchermanager.menu; +package com.wonu606.vouchermanager.console.cableadapter; import java.util.Arrays; import java.util.List; diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/cableadapter/FrontCableAdapter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/cableadapter/FrontCableAdapter.java new file mode 100644 index 0000000000..264c3d12b8 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/cableadapter/FrontCableAdapter.java @@ -0,0 +1,59 @@ +package com.wonu606.vouchermanager.console.cableadapter; + +import com.wonu606.vouchermanager.console.controllercable.CustomerControllerCable; +import com.wonu606.vouchermanager.console.controllercable.VoucherControllerCable; +import com.wonu606.vouchermanager.console.consoleio.concreate.FrontConsoleIo; +import org.springframework.stereotype.Component; + +@Component +public class FrontCableAdapter { + + private final CustomerControllerCable customerControllerCable; + private final VoucherControllerCable voucherControllerCable; + private final FrontConsoleIo consoleIo; + + public FrontCableAdapter(CustomerControllerCable customerControllerCable, + VoucherControllerCable voucherControllerCable, FrontConsoleIo consoleIo) { + this.customerControllerCable = customerControllerCable; + this.voucherControllerCable = voucherControllerCable; + this.consoleIo = consoleIo; + } + + public void run() { + ConsoleMenu menu = ConsoleMenu.START; + while (menu.isNotExit()) { + try { + menu = consoleIo.selectMenu(); + executeMenuAction(menu); + } catch (Exception exception) { + consoleIo.displayMessage(exception.getMessage()); + } + } + terminal(); + } + + private void executeMenuAction(ConsoleMenu menu) { + switch (menu) { + case EXIT: + return; + case CUSTOMER: + customerControllerCable.run(); + return; + case VOUCHER: + voucherControllerCable.run(); + return; + + default: + throw new IllegalArgumentException("수행할 수 없는 메뉴입니다."); + } + } + + private void terminal() { + consoleIo.displayMessage("곧 프로그램을 종료합니다."); + try { + Thread.sleep(3000); + } catch (InterruptedException ignored) { + } + consoleIo.terminal(); + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/io/AbstractConsoleIO.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/consoleio/AbstractConsoleIO.java similarity index 88% rename from voucher-manager/src/main/java/com/wonu606/vouchermanager/io/AbstractConsoleIO.java rename to voucher-manager/src/main/java/com/wonu606/vouchermanager/console/consoleio/AbstractConsoleIO.java index 595d30a5dd..c1f73d51cc 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/io/AbstractConsoleIO.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/consoleio/AbstractConsoleIO.java @@ -1,6 +1,4 @@ -package com.wonu606.vouchermanager.io; - -import com.wonu606.vouchermanager.menu.VoucherMenu; +package com.wonu606.vouchermanager.console.consoleio; public abstract class AbstractConsoleIO { diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/io/ConsoleInput.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/consoleio/ConsoleInput.java similarity index 93% rename from voucher-manager/src/main/java/com/wonu606/vouchermanager/io/ConsoleInput.java rename to voucher-manager/src/main/java/com/wonu606/vouchermanager/console/consoleio/ConsoleInput.java index 5d6bc0215e..659e830dad 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/io/ConsoleInput.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/consoleio/ConsoleInput.java @@ -1,4 +1,4 @@ -package com.wonu606.vouchermanager.io; +package com.wonu606.vouchermanager.console.consoleio; import java.util.List; import org.beryx.textio.TextIO; diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/io/ConsolePrinter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/consoleio/ConsolePrinter.java similarity index 88% rename from voucher-manager/src/main/java/com/wonu606/vouchermanager/io/ConsolePrinter.java rename to voucher-manager/src/main/java/com/wonu606/vouchermanager/console/consoleio/ConsolePrinter.java index 403e4e686a..46710a0ba3 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/io/ConsolePrinter.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/consoleio/ConsolePrinter.java @@ -1,4 +1,4 @@ -package com.wonu606.vouchermanager.io; +package com.wonu606.vouchermanager.console.consoleio; import org.beryx.textio.TextIoFactory; import org.beryx.textio.TextTerminal; diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/io/CustomerConsoleIO.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/consoleio/concreate/CustomerConsoleIO.java similarity index 78% rename from voucher-manager/src/main/java/com/wonu606/vouchermanager/io/CustomerConsoleIO.java rename to voucher-manager/src/main/java/com/wonu606/vouchermanager/console/consoleio/concreate/CustomerConsoleIO.java index 86d7c7dd8c..92490c9184 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/io/CustomerConsoleIO.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/consoleio/concreate/CustomerConsoleIO.java @@ -1,8 +1,11 @@ -package com.wonu606.vouchermanager.io; +package com.wonu606.vouchermanager.console.consoleio.concreate; +import com.wonu606.vouchermanager.console.consoleio.ConsoleInput; import com.wonu606.vouchermanager.domain.customer.Customer; import com.wonu606.vouchermanager.domain.voucher.Voucher; -import com.wonu606.vouchermanager.menu.CustomerMenu; +import com.wonu606.vouchermanager.console.controllercable.menu.CustomerMenu; +import com.wonu606.vouchermanager.console.consoleio.AbstractConsoleIO; +import com.wonu606.vouchermanager.console.consoleio.ConsolePrinter; import java.util.List; import org.springframework.stereotype.Component; diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/io/FrontConsoleIO.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/consoleio/concreate/FrontConsoleIo.java similarity index 54% rename from voucher-manager/src/main/java/com/wonu606/vouchermanager/io/FrontConsoleIO.java rename to voucher-manager/src/main/java/com/wonu606/vouchermanager/console/consoleio/concreate/FrontConsoleIo.java index d63feb258e..bfa7bedf36 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/io/FrontConsoleIO.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/consoleio/concreate/FrontConsoleIo.java @@ -1,12 +1,15 @@ -package com.wonu606.vouchermanager.io; +package com.wonu606.vouchermanager.console.consoleio.concreate; -import com.wonu606.vouchermanager.menu.ConsoleMenu; +import com.wonu606.vouchermanager.console.consoleio.AbstractConsoleIO; +import com.wonu606.vouchermanager.console.consoleio.ConsoleInput; +import com.wonu606.vouchermanager.console.cableadapter.ConsoleMenu; +import com.wonu606.vouchermanager.console.consoleio.ConsolePrinter; import org.springframework.stereotype.Component; @Component -public class FrontConsoleIO extends AbstractConsoleIO { +public class FrontConsoleIo extends AbstractConsoleIO { - public FrontConsoleIO(ConsoleInput input, ConsolePrinter printer) { + public FrontConsoleIo(ConsoleInput input, ConsolePrinter printer) { super(input, printer); } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/io/VoucherConsoleIO.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/consoleio/concreate/VoucherConsoleIO.java similarity index 82% rename from voucher-manager/src/main/java/com/wonu606/vouchermanager/io/VoucherConsoleIO.java rename to voucher-manager/src/main/java/com/wonu606/vouchermanager/console/consoleio/concreate/VoucherConsoleIO.java index 983321faa1..2f2f7e1dac 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/io/VoucherConsoleIO.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/consoleio/concreate/VoucherConsoleIO.java @@ -1,8 +1,11 @@ -package com.wonu606.vouchermanager.io; +package com.wonu606.vouchermanager.console.consoleio.concreate; import com.wonu606.vouchermanager.domain.customer.Customer; import com.wonu606.vouchermanager.domain.voucher.Voucher; -import com.wonu606.vouchermanager.menu.VoucherMenu; +import com.wonu606.vouchermanager.console.controllercable.menu.VoucherMenu; +import com.wonu606.vouchermanager.console.consoleio.AbstractConsoleIO; +import com.wonu606.vouchermanager.console.consoleio.ConsoleInput; +import com.wonu606.vouchermanager.console.consoleio.ConsolePrinter; import com.wonu606.vouchermanager.service.voucher.VoucherType; import java.util.List; import org.springframework.stereotype.Component; diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/consoleInterface/CustomerConsoleInterface.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/CustomerControllerCable.java similarity index 88% rename from voucher-manager/src/main/java/com/wonu606/vouchermanager/consoleInterface/CustomerConsoleInterface.java rename to voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/CustomerControllerCable.java index 495ec38393..37e8cd0c62 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/consoleInterface/CustomerConsoleInterface.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/CustomerControllerCable.java @@ -1,21 +1,21 @@ -package com.wonu606.vouchermanager.consoleInterface; +package com.wonu606.vouchermanager.console.controllercable; import com.wonu606.vouchermanager.controller.CustomerController; +import com.wonu606.vouchermanager.console.controllercable.menu.CustomerMenu; import com.wonu606.vouchermanager.domain.customer.Customer; import com.wonu606.vouchermanager.domain.customer.CustomerDto; import com.wonu606.vouchermanager.domain.voucher.Voucher; -import com.wonu606.vouchermanager.io.CustomerConsoleIO; -import com.wonu606.vouchermanager.menu.CustomerMenu; +import com.wonu606.vouchermanager.console.consoleio.concreate.CustomerConsoleIO; import java.util.List; import org.springframework.stereotype.Component; @Component -public class CustomerConsoleInterface { +public class CustomerControllerCable { private final CustomerConsoleIO customerConsoleIO; private final CustomerController customerController; - public CustomerConsoleInterface(CustomerConsoleIO customerConsoleIO, + public CustomerControllerCable(CustomerConsoleIO customerConsoleIO, CustomerController customerController) { this.customerConsoleIO = customerConsoleIO; this.customerController = customerController; diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/consoleInterface/VoucherConsoleInterface.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/VoucherControllerCable.java similarity index 80% rename from voucher-manager/src/main/java/com/wonu606/vouchermanager/consoleInterface/VoucherConsoleInterface.java rename to voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/VoucherControllerCable.java index daf085c9ef..e202084bd6 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/consoleInterface/VoucherConsoleInterface.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/VoucherControllerCable.java @@ -1,23 +1,23 @@ -package com.wonu606.vouchermanager.consoleInterface; +package com.wonu606.vouchermanager.console.controllercable; +import com.wonu606.vouchermanager.console.controllercable.menu.VoucherMenu; import com.wonu606.vouchermanager.controller.VoucherController; -import com.wonu606.vouchermanager.domain.CustomerVoucherWallet.CustomerVoucherWalletDto; +import com.wonu606.vouchermanager.domain.voucherwallet.VoucherWalletDto; import com.wonu606.vouchermanager.domain.customer.Customer; import com.wonu606.vouchermanager.domain.voucher.Voucher; import com.wonu606.vouchermanager.domain.voucher.VoucherDto; -import com.wonu606.vouchermanager.io.VoucherConsoleIO; -import com.wonu606.vouchermanager.menu.VoucherMenu; +import com.wonu606.vouchermanager.console.consoleio.concreate.VoucherConsoleIO; import java.util.List; import java.util.UUID; import org.springframework.stereotype.Component; @Component -public class VoucherConsoleInterface { +public class VoucherControllerCable { private final VoucherConsoleIO voucherConsoleIO; private final VoucherController controller; - public VoucherConsoleInterface(VoucherConsoleIO voucherConsoleIO, + public VoucherControllerCable(VoucherConsoleIO voucherConsoleIO, VoucherController controller) { this.voucherConsoleIO = voucherConsoleIO; this.controller = controller; @@ -50,7 +50,7 @@ private void executeMenuAction(VoucherMenu menu) { controller.createVoucher(voucherDto); return; case ASSIGN: - CustomerVoucherWalletDto walletDto = createWalletDto(); + VoucherWalletDto walletDto = createWalletDto(); controller.assignWallet(walletDto); return; @@ -65,10 +65,10 @@ private void executeMenuAction(VoucherMenu menu) { } } - private CustomerVoucherWalletDto createWalletDto() { + private VoucherWalletDto createWalletDto() { String uuid = voucherConsoleIO.readString("Voucher UUID"); String emailAddress = voucherConsoleIO.readString("Customer EmailAddress"); - return new CustomerVoucherWalletDto(UUID.fromString(uuid), emailAddress); + return new VoucherWalletDto(UUID.fromString(uuid), emailAddress); } private VoucherDto createVoucherDto() { diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/menu/CustomerMenu.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/menu/CustomerMenu.java similarity index 92% rename from voucher-manager/src/main/java/com/wonu606/vouchermanager/menu/CustomerMenu.java rename to voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/menu/CustomerMenu.java index 3e79818567..b965e3a1be 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/menu/CustomerMenu.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/menu/CustomerMenu.java @@ -1,4 +1,4 @@ -package com.wonu606.vouchermanager.menu; +package com.wonu606.vouchermanager.console.controllercable.menu; import java.util.Arrays; import java.util.List; diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/menu/VoucherMenu.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/menu/VoucherMenu.java similarity index 92% rename from voucher-manager/src/main/java/com/wonu606/vouchermanager/menu/VoucherMenu.java rename to voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/menu/VoucherMenu.java index 72b3467c39..cafa50d30e 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/menu/VoucherMenu.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/menu/VoucherMenu.java @@ -1,4 +1,4 @@ -package com.wonu606.vouchermanager.menu; +package com.wonu606.vouchermanager.console.controllercable.menu; import java.util.Arrays; import java.util.List; diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/consoleInterface/FrontConsoleInterface.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/consoleInterface/FrontConsoleInterface.java deleted file mode 100644 index b336a0c86f..0000000000 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/consoleInterface/FrontConsoleInterface.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.wonu606.vouchermanager.consoleInterface; - -import com.wonu606.vouchermanager.domain.customer.Customer; -import com.wonu606.vouchermanager.domain.customer.CustomerDto; -import com.wonu606.vouchermanager.domain.voucher.Voucher; -import com.wonu606.vouchermanager.io.FrontConsoleIO; -import com.wonu606.vouchermanager.menu.ConsoleMenu; -import com.wonu606.vouchermanager.menu.CustomerMenu; -import java.util.List; -import org.springframework.stereotype.Component; - -@Component -public class FrontConsoleInterface { - - private final CustomerConsoleInterface customerConsoleInterface; - private final VoucherConsoleInterface voucherConsoleInterface; - private final FrontConsoleIO frontConsoleIO; - - public FrontConsoleInterface(CustomerConsoleInterface customerConsoleInterface, - VoucherConsoleInterface voucherConsoleInterface, FrontConsoleIO frontConsoleIO) { - this.customerConsoleInterface = customerConsoleInterface; - this.voucherConsoleInterface = voucherConsoleInterface; - this.frontConsoleIO = frontConsoleIO; - } - - public void run() { - ConsoleMenu menu = ConsoleMenu.START; - while (menu.isNotExit()) { - try { - menu = frontConsoleIO.selectMenu(); - executeMenuAction(menu); - } catch (Exception exception) { - frontConsoleIO.displayMessage(exception.getMessage()); - } - } - terminal(); - } - - private void executeMenuAction(ConsoleMenu menu) { - switch (menu) { - case EXIT: - return; - case CUSTOMER: - customerConsoleInterface.run(); - return; - case VOUCHER: - voucherConsoleInterface.run(); - return; - - default: - throw new IllegalArgumentException("수행할 수 없는 메뉴입니다."); - } - } - - private void terminal() { - frontConsoleIO.displayMessage("곧 프로그램을 종료합니다."); - try { - Thread.sleep(3000); - } catch (InterruptedException ignored) { - } - frontConsoleIO.terminal(); - } -} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/CustomerController.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/CustomerController.java index 7fe71a16f9..3e48f7f866 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/CustomerController.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/CustomerController.java @@ -1,12 +1,12 @@ package com.wonu606.vouchermanager.controller; -import com.wonu606.vouchermanager.domain.CustomerVoucherWallet.CustomerVoucherWalletDto; +import com.wonu606.vouchermanager.domain.voucherwallet.VoucherWalletDto; import com.wonu606.vouchermanager.domain.customer.Customer; import com.wonu606.vouchermanager.domain.customer.CustomerDto; -import com.wonu606.vouchermanager.domain.customer.emailAddress.EmailAddress; +import com.wonu606.vouchermanager.domain.customer.email.Email; import com.wonu606.vouchermanager.domain.voucher.Voucher; import com.wonu606.vouchermanager.service.customer.CustomerService; -import com.wonu606.vouchermanager.service.customerVoucherWallet.CustomerVoucherWalletService; +import com.wonu606.vouchermanager.service.voucherwallet.VoucherWalletService; import com.wonu606.vouchermanager.service.voucher.VoucherService; import java.util.List; import java.util.UUID; @@ -17,10 +17,10 @@ public class CustomerController { private final CustomerService customerService; private final VoucherService voucherService; - private final CustomerVoucherWalletService walletService; + private final VoucherWalletService walletService; public CustomerController(CustomerService customerService, VoucherService voucherService, - CustomerVoucherWalletService walletService) { + VoucherWalletService walletService) { this.customerService = customerService; this.voucherService = voucherService; this.walletService = walletService; @@ -36,12 +36,13 @@ public List getCustomerList() { } public List getVouchersOwnedByCustomer(String emailAddress) { - List voucherIdList = walletService.findVoucherIdListByCustomerEmailAddress(new EmailAddress(emailAddress)); + List voucherIdList = walletService.findVoucherIdListByCustomerEmailAddress( + new Email(emailAddress)); return voucherService.getVoucherList(voucherIdList); } public void deleteWallet(String emailAddress, String voucherId) { walletService.deleteByWallet( - new CustomerVoucherWalletDto(UUID.fromString(voucherId), emailAddress)); + new VoucherWalletDto(UUID.fromString(voucherId), emailAddress)); } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/VoucherController.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/VoucherController.java index f499debf9d..dadd85d7ee 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/VoucherController.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/VoucherController.java @@ -1,12 +1,12 @@ package com.wonu606.vouchermanager.controller; -import com.wonu606.vouchermanager.domain.CustomerVoucherWallet.CustomerVoucherWalletDto; +import com.wonu606.vouchermanager.domain.voucherwallet.VoucherWalletDto; import com.wonu606.vouchermanager.domain.customer.Customer; -import com.wonu606.vouchermanager.domain.customer.emailAddress.EmailAddress; +import com.wonu606.vouchermanager.domain.customer.email.Email; import com.wonu606.vouchermanager.domain.voucher.Voucher; import com.wonu606.vouchermanager.domain.voucher.VoucherDto; import com.wonu606.vouchermanager.service.customer.CustomerService; -import com.wonu606.vouchermanager.service.customerVoucherWallet.CustomerVoucherWalletService; +import com.wonu606.vouchermanager.service.voucherwallet.VoucherWalletService; import com.wonu606.vouchermanager.service.voucher.VoucherService; import java.util.List; import java.util.UUID; @@ -18,10 +18,10 @@ public class VoucherController { private final VoucherService voucherService; private final CustomerService customerService; - private final CustomerVoucherWalletService walletService; + private final VoucherWalletService walletService; public VoucherController(VoucherService voucherService, CustomerService customerService, - CustomerVoucherWalletService walletService) { + VoucherWalletService walletService) { this.voucherService = voucherService; this.customerService = customerService; this.walletService = walletService; @@ -40,11 +40,11 @@ public List getCustomersOwnedByVoucherId(String voucherId) { walletService.findEmailAddressesByVoucherId(UUID.fromString(voucherId)); return customerService.getCustomerList( customerEmailAddressList.stream() - .map(EmailAddress::new) + .map(Email::new) .collect(Collectors.toList())); } - public void assignWallet(CustomerVoucherWalletDto walletDto) { + public void assignWallet(VoucherWalletDto walletDto) { walletService.save(walletDto); } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/CustomerVoucherWallet/CustomerVoucherWalletResultSet.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/CustomerVoucherWallet/CustomerVoucherWalletResultSet.java deleted file mode 100644 index ad92fdb86b..0000000000 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/CustomerVoucherWallet/CustomerVoucherWalletResultSet.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.wonu606.vouchermanager.domain.CustomerVoucherWallet; - -import java.util.UUID; - -public class CustomerVoucherWalletResultSet { - private final UUID voucherId; - private final String emailAddress; - - public CustomerVoucherWalletResultSet(UUID voucherId, String emailAddress) { - this.voucherId = voucherId; - this.emailAddress = emailAddress; - } - - public UUID getVoucherId() { - return voucherId; - } - - public String getEmailAddress() { - return emailAddress; - } -} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/customer/Customer.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/customer/Customer.java index e83db9d3e2..110a3ca80e 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/customer/Customer.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/customer/Customer.java @@ -1,20 +1,20 @@ package com.wonu606.vouchermanager.domain.customer; -import com.wonu606.vouchermanager.domain.customer.emailAddress.EmailAddress; +import com.wonu606.vouchermanager.domain.customer.email.Email; import java.util.Objects; public class Customer { - private final EmailAddress emailAddress; + private final Email email; private final String nickname; - public Customer(EmailAddress emailAddress, String nickname) { - this.emailAddress = emailAddress; + public Customer(Email email, String nickname) { + this.email = email; this.nickname = nickname; } public String getEmailAddress() { - return emailAddress.getAddress(); + return email.getAddress(); } public String getNickname() { @@ -42,7 +42,7 @@ public int hashCode() { @Override public String toString() { return "Customer{" + - "emailAddress=" + emailAddress + + "emailAddress=" + email + ", nickname='" + nickname + '\'' + '}'; } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/customer/emailAddress/EmailAddress.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/customer/email/Email.java similarity index 86% rename from voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/customer/emailAddress/EmailAddress.java rename to voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/customer/email/Email.java index e689c5b4bb..ac0be37609 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/customer/emailAddress/EmailAddress.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/customer/email/Email.java @@ -1,16 +1,16 @@ -package com.wonu606.vouchermanager.domain.customer.emailAddress; +package com.wonu606.vouchermanager.domain.customer.email; import java.util.Objects; import java.util.regex.Pattern; -public class EmailAddress { +public class Email { private static final Pattern ADDRESS_PATTERN = Pattern.compile( "^[A-Za-z0-9]+@[A-Za-z0-9-]+.[A-Za-z]+(.[A-Za-z]+)*$"); private final String address; - public EmailAddress(String address) { + public Email(String address) { validateAddress(address); this.address = address; } @@ -37,7 +37,7 @@ public boolean equals(Object o) { if (o == null || getClass() != o.getClass()) { return false; } - EmailAddress that = (EmailAddress) o; + Email that = (Email) o; return Objects.equals(getAddress(), that.getAddress()); } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/customer/emailAddress/EmailAddressDto.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/customer/email/EmailDto.java similarity index 50% rename from voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/customer/emailAddress/EmailAddressDto.java rename to voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/customer/email/EmailDto.java index 4756dfcb92..db4cb9754d 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/customer/emailAddress/EmailAddressDto.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/customer/email/EmailDto.java @@ -1,9 +1,9 @@ -package com.wonu606.vouchermanager.domain.customer.emailAddress; +package com.wonu606.vouchermanager.domain.customer.email; -public class EmailAddressDto { +public class EmailDto { String emailAddress; - public EmailAddressDto(String emailAddress) { + public EmailDto(String emailAddress) { this.emailAddress = emailAddress; } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/CustomerVoucherWallet/CustomerVoucherWallet.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/voucherwallet/VoucherWallet.java similarity index 61% rename from voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/CustomerVoucherWallet/CustomerVoucherWallet.java rename to voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/voucherwallet/VoucherWallet.java index 5433fc9e04..7d665e1227 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/CustomerVoucherWallet/CustomerVoucherWallet.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/voucherwallet/VoucherWallet.java @@ -1,17 +1,17 @@ -package com.wonu606.vouchermanager.domain.CustomerVoucherWallet; +package com.wonu606.vouchermanager.domain.voucherwallet; -import com.wonu606.vouchermanager.domain.customer.emailAddress.EmailAddress; +import com.wonu606.vouchermanager.domain.customer.email.Email; import java.util.Objects; import java.util.UUID; -public class CustomerVoucherWallet { +public class VoucherWallet { private final UUID voucherId; - private final EmailAddress emailAddress; + private final Email email; - public CustomerVoucherWallet(UUID voucherId, EmailAddress emailAddress) { + public VoucherWallet(UUID voucherId, Email email) { this.voucherId = voucherId; - this.emailAddress = emailAddress; + this.email = email; } public UUID getVoucherId() { @@ -19,7 +19,7 @@ public UUID getVoucherId() { } public String getEmailAddress() { - return emailAddress.getAddress(); + return email.getAddress(); } @Override @@ -30,7 +30,7 @@ public boolean equals(Object o) { if (o == null || getClass() != o.getClass()) { return false; } - CustomerVoucherWallet that = (CustomerVoucherWallet) o; + VoucherWallet that = (VoucherWallet) o; return Objects.equals(getVoucherId(), that.getVoucherId()) && Objects.equals(getEmailAddress(), that.getEmailAddress()); } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/voucherwallet/VoucherWalletDto.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/voucherwallet/VoucherWalletDto.java new file mode 100644 index 0000000000..d501242424 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/voucherwallet/VoucherWalletDto.java @@ -0,0 +1,27 @@ +package com.wonu606.vouchermanager.domain.voucherwallet; + +import com.wonu606.vouchermanager.domain.customer.email.Email; +import java.util.UUID; + +public class VoucherWalletDto { + + private final UUID voucherId; + private final String emailAddress; + + public VoucherWalletDto(UUID voucherId, String emailAddress) { + this.voucherId = voucherId; + this.emailAddress = emailAddress; + } + + public UUID getVoucherId() { + return voucherId; + } + + public String getEmailAddress() { + return emailAddress; + } + + public VoucherWallet toEntity() { + return new VoucherWallet(getVoucherId(), new Email(getEmailAddress())); + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/CustomerVoucherWallet/CustomerVoucherWalletDto.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/voucherwallet/VoucherWalletResultSet.java similarity index 64% rename from voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/CustomerVoucherWallet/CustomerVoucherWalletDto.java rename to voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/voucherwallet/VoucherWalletResultSet.java index 07ee4ea6f5..aab1855973 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/CustomerVoucherWallet/CustomerVoucherWalletDto.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/voucherwallet/VoucherWalletResultSet.java @@ -1,12 +1,12 @@ -package com.wonu606.vouchermanager.domain.CustomerVoucherWallet; +package com.wonu606.vouchermanager.domain.voucherwallet; import java.util.UUID; -public class CustomerVoucherWalletDto { +public class VoucherWalletResultSet { private final UUID voucherId; private final String emailAddress; - public CustomerVoucherWalletDto(UUID voucherId, String emailAddress) { + public VoucherWalletResultSet(UUID voucherId, String emailAddress) { this.voucherId = voucherId; this.emailAddress = emailAddress; } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/CustomerRepository.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/CustomerRepository.java index a3ca98218d..be9ff8f1e4 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/CustomerRepository.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/CustomerRepository.java @@ -1,7 +1,7 @@ package com.wonu606.vouchermanager.repository.customer; import com.wonu606.vouchermanager.domain.customer.Customer; -import com.wonu606.vouchermanager.domain.customer.emailAddress.EmailAddress; +import com.wonu606.vouchermanager.domain.customer.email.Email; import java.util.List; import java.util.Optional; @@ -9,13 +9,13 @@ public interface CustomerRepository { Customer save(Customer customer); - Optional findByEmailAddress(EmailAddress emailAddress); + Optional findByEmailAddress(Email email); List findAll(); - List findAllByEmailAddresses(List emailAddresses); + List findAllByEmailAddresses(List emails); - void deleteByEmailAddress(EmailAddress emailAddress); + void deleteByEmailAddress(Email email); void deleteAll(); } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/CustomerResultSetRepository.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/CustomerResultSetRepository.java index 43727ea9d0..28ddd4b1ac 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/CustomerResultSetRepository.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/CustomerResultSetRepository.java @@ -2,7 +2,7 @@ import com.wonu606.vouchermanager.domain.customer.Customer; import com.wonu606.vouchermanager.domain.customer.CustomerResultSet; -import com.wonu606.vouchermanager.domain.customer.emailAddress.EmailAddress; +import com.wonu606.vouchermanager.domain.customer.email.Email; import java.util.List; import java.util.Optional; @@ -10,13 +10,13 @@ public interface CustomerResultSetRepository { Customer save(Customer customer); - Optional findByEmailAddress(EmailAddress emailAddress); + Optional findByEmailAddress(Email email); List findAll(); - void deleteByEmailAddress(EmailAddress emailAddress); + void deleteByEmailAddress(Email email); void deleteAll(); - List findAllByEmailAddresses(List emailAddresses); + List findAllByEmailAddresses(List emails); } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/JdbcCustomerResultSetRepository.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/JdbcCustomerResultSetRepository.java index d11547b7ff..a9350beaee 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/JdbcCustomerResultSetRepository.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/JdbcCustomerResultSetRepository.java @@ -2,7 +2,7 @@ import com.wonu606.vouchermanager.domain.customer.Customer; import com.wonu606.vouchermanager.domain.customer.CustomerResultSet; -import com.wonu606.vouchermanager.domain.customer.emailAddress.EmailAddress; +import com.wonu606.vouchermanager.domain.customer.email.Email; import java.time.LocalDateTime; import java.util.Collections; import java.util.HashMap; @@ -38,10 +38,10 @@ public Customer save(Customer customer) { } @Override - public Optional findByEmailAddress(EmailAddress emailAddress) { + public Optional findByEmailAddress(Email email) { String selectSql = "SELECT * FROM customer WHERE email_address = :email_address"; Map params = new HashMap<>(); - params.put("email_address", emailAddress.getAddress()); + params.put("email_address", email.getAddress()); try { CustomerResultSet customerResultSet = namedParameterJdbcTemplate. queryForObject(selectSql, params, customerResultSetRowMapper()); @@ -58,10 +58,10 @@ public List findAll() { } @Override - public void deleteByEmailAddress(EmailAddress emailAddress) { + public void deleteByEmailAddress(Email email) { String deleteSql = "DELETE FROM customer WHERE email_address = :email_address"; Map params = new HashMap<>(); - params.put("email_address", emailAddress.getAddress()); + params.put("email_address", email.getAddress()); namedParameterJdbcTemplate.update(deleteSql, params); } @@ -72,8 +72,8 @@ public void deleteAll() { } @Override - public List findAllByEmailAddresses(List emailAddresses) { - if (emailAddresses.isEmpty()) { + public List findAllByEmailAddresses(List emails) { + if (emails.isEmpty()) { return Collections.emptyList(); } @@ -81,8 +81,8 @@ public List findAllByEmailAddresses(List emailA MapSqlParameterSource parameters = new MapSqlParameterSource(); parameters.addValue("email_address", - emailAddresses.stream() - .map(EmailAddress::getAddress) + emails.stream() + .map(Email::getAddress) .collect(Collectors.toList())); return namedParameterJdbcTemplate.query( selectSql, parameters, customerResultSetRowMapper()); diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/MappingCustomerRepository.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/MappingCustomerRepository.java index 3ac4888db3..1a34774cff 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/MappingCustomerRepository.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/MappingCustomerRepository.java @@ -2,7 +2,7 @@ import com.wonu606.vouchermanager.domain.customer.Customer; import com.wonu606.vouchermanager.domain.customer.CustomerResultSet; -import com.wonu606.vouchermanager.domain.customer.emailAddress.EmailAddress; +import com.wonu606.vouchermanager.domain.customer.email.Email; import java.util.List; import java.util.Optional; import java.util.stream.Collectors; @@ -23,8 +23,8 @@ public Customer save(Customer customer) { } @Override - public Optional findByEmailAddress(EmailAddress emailAddress) { - return customerResultSetRepository.findByEmailAddress(emailAddress) + public Optional findByEmailAddress(Email email) { + return customerResultSetRepository.findByEmailAddress(email) .map(this::convertResultSetToEntity); } @@ -36,17 +36,17 @@ public List findAll() { } @Override - public List findAllByEmailAddresses(List emailAddresses) { + public List findAllByEmailAddresses(List emails) { List customerResultSets = - customerResultSetRepository.findAllByEmailAddresses(emailAddresses); + customerResultSetRepository.findAllByEmailAddresses(emails); return customerResultSets.stream() .map(this::convertResultSetToEntity) .collect(Collectors.toList()); } @Override - public void deleteByEmailAddress(EmailAddress emailAddress) { - customerResultSetRepository.deleteByEmailAddress(emailAddress); + public void deleteByEmailAddress(Email email) { + customerResultSetRepository.deleteByEmailAddress(email); } @Override @@ -56,7 +56,7 @@ public void deleteAll() { private Customer convertResultSetToEntity(CustomerResultSet customerResultSet) { return new Customer( - new EmailAddress(customerResultSet.getEmailAddress()), + new Email(customerResultSet.getEmailAddress()), customerResultSet.getNickname()); } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customerVoucherWallet/CustomerVoucherWalletRepository.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customerVoucherWallet/CustomerVoucherWalletRepository.java deleted file mode 100644 index b1f4c2bb0a..0000000000 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customerVoucherWallet/CustomerVoucherWalletRepository.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.wonu606.vouchermanager.repository.customerVoucherWallet; - -import com.wonu606.vouchermanager.domain.CustomerVoucherWallet.CustomerVoucherWallet; -import com.wonu606.vouchermanager.domain.customer.emailAddress.EmailAddress; -import java.util.List; -import java.util.UUID; - -public interface CustomerVoucherWalletRepository { - - List findIdByCustomerEmailAddress(EmailAddress emailAddress); - - void deleteByWallet(CustomerVoucherWallet customerVoucherWallet); - - CustomerVoucherWallet save(CustomerVoucherWallet customerVoucherWallet); - - List findEmailAddressesByVoucherId(UUID voucherId); -} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customerVoucherWallet/JdbcCustomerVoucherWalletRepository.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/JdbcVoucherWalletRepository.java similarity index 67% rename from voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customerVoucherWallet/JdbcCustomerVoucherWalletRepository.java rename to voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/JdbcVoucherWalletRepository.java index d944556723..618ca1f4f9 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customerVoucherWallet/JdbcCustomerVoucherWalletRepository.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/JdbcVoucherWalletRepository.java @@ -1,7 +1,7 @@ -package com.wonu606.vouchermanager.repository.customerVoucherWallet; +package com.wonu606.vouchermanager.repository.voucherwallet; -import com.wonu606.vouchermanager.domain.CustomerVoucherWallet.CustomerVoucherWallet; -import com.wonu606.vouchermanager.domain.customer.emailAddress.EmailAddress; +import com.wonu606.vouchermanager.domain.voucherwallet.VoucherWallet; +import com.wonu606.vouchermanager.domain.customer.email.Email; import java.util.List; import java.util.UUID; import javax.sql.DataSource; @@ -9,24 +9,24 @@ import org.springframework.stereotype.Component; @Component -public class JdbcCustomerVoucherWalletRepository implements CustomerVoucherWalletRepository { +public class JdbcVoucherWalletRepository implements VoucherWalletRepository { private final JdbcTemplate jdbcTemplate; - public JdbcCustomerVoucherWalletRepository(DataSource dataSource) { + public JdbcVoucherWalletRepository(DataSource dataSource) { this.jdbcTemplate = new JdbcTemplate(dataSource); } @Override - public List findIdByCustomerEmailAddress(EmailAddress emailAddress) { + public List findIdByCustomerEmailAddress(Email email) { String selectSql = "SELECT voucher_id FROM customer_voucher_wallet WHERE customer_email_address = ?"; return jdbcTemplate.query(selectSql, (rs, rowNum) -> UUID.fromString(rs.getString("voucher_id")), - emailAddress.getAddress()); + email.getAddress()); } @Override - public void deleteByWallet(CustomerVoucherWallet wallet) { + public void deleteByWallet(VoucherWallet wallet) { String deleteSql = "DELETE FROM customer_voucher_wallet WHERE customer_email_address = ? AND voucher_id = ?"; jdbcTemplate.update(deleteSql, wallet.getEmailAddress(), @@ -34,7 +34,7 @@ public void deleteByWallet(CustomerVoucherWallet wallet) { } @Override - public CustomerVoucherWallet save(CustomerVoucherWallet wallet) { + public VoucherWallet save(VoucherWallet wallet) { insertCustomerVoucherWallet(wallet); return wallet; } @@ -47,7 +47,7 @@ public List findEmailAddressesByVoucherId(UUID voucherId) { voucherId.toString()); } - private void insertCustomerVoucherWallet(CustomerVoucherWallet wallet) { + private void insertCustomerVoucherWallet(VoucherWallet wallet) { String insertSql = "INSERT INTO customer_voucher_wallet (customer_email_address, voucher_id) VALUES (?, ?)"; jdbcTemplate.update(insertSql, wallet.getEmailAddress(), diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/VoucherWalletRepository.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/VoucherWalletRepository.java new file mode 100644 index 0000000000..5a3385f3eb --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/VoucherWalletRepository.java @@ -0,0 +1,17 @@ +package com.wonu606.vouchermanager.repository.voucherwallet; + +import com.wonu606.vouchermanager.domain.voucherwallet.VoucherWallet; +import com.wonu606.vouchermanager.domain.customer.email.Email; +import java.util.List; +import java.util.UUID; + +public interface VoucherWalletRepository { + + List findIdByCustomerEmailAddress(Email email); + + void deleteByWallet(VoucherWallet voucherWallet); + + VoucherWallet save(VoucherWallet voucherWallet); + + List findEmailAddressesByVoucherId(UUID voucherId); +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/CustomerService.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/CustomerService.java index e6b4fd9bc0..1e47c5f372 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/CustomerService.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/CustomerService.java @@ -2,13 +2,11 @@ import com.wonu606.vouchermanager.domain.customer.Customer; import com.wonu606.vouchermanager.domain.customer.CustomerDto; -import com.wonu606.vouchermanager.domain.customer.emailAddress.EmailAddress; -import com.wonu606.vouchermanager.domain.customer.emailAddress.EmailAddressDto; -import com.wonu606.vouchermanager.domain.voucher.Voucher; +import com.wonu606.vouchermanager.domain.customer.email.Email; +import com.wonu606.vouchermanager.domain.customer.email.EmailDto; import com.wonu606.vouchermanager.repository.customer.CustomerRepository; import java.util.List; import java.util.Optional; -import java.util.UUID; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; @@ -30,22 +28,22 @@ public Customer saveCustomer(Customer customer) { return customerRepository.save(customer); } - public Optional findCustomerByEmailAddress(EmailAddressDto emailAddressDto) { - EmailAddress emailAddress = new EmailAddress(emailAddressDto.getEmailAddress()); - return customerRepository.findByEmailAddress(emailAddress); + public Optional findCustomerByEmailAddress(EmailDto emailDto) { + Email email = new Email(emailDto.getEmailAddress()); + return customerRepository.findByEmailAddress(email); } public List getCustomerList() { return customerRepository.findAll(); } - public List getCustomerList(List emailAddresses) { - return customerRepository.findAllByEmailAddresses(emailAddresses); + public List getCustomerList(List emails) { + return customerRepository.findAllByEmailAddresses(emails); } private static Customer convertDtoToCustomer(CustomerDto customerDto) { return new Customer( - new EmailAddress(customerDto.getEmailAddress()), + new Email(customerDto.getEmailAddress()), customerDto.getNickname()); } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customerVoucherWallet/CustomerVoucherWalletService.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customerVoucherWallet/CustomerVoucherWalletService.java deleted file mode 100644 index 1975ed562f..0000000000 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customerVoucherWallet/CustomerVoucherWalletService.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.wonu606.vouchermanager.service.customerVoucherWallet; - -import com.wonu606.vouchermanager.domain.CustomerVoucherWallet.CustomerVoucherWallet; -import com.wonu606.vouchermanager.domain.CustomerVoucherWallet.CustomerVoucherWalletDto; -import com.wonu606.vouchermanager.domain.customer.emailAddress.EmailAddress; -import com.wonu606.vouchermanager.repository.customerVoucherWallet.CustomerVoucherWalletRepository; -import java.util.List; -import java.util.UUID; -import org.springframework.stereotype.Component; -import org.springframework.transaction.annotation.Transactional; - -@Component -@Transactional -public class CustomerVoucherWalletService { - - private final CustomerVoucherWalletRepository customerVoucherWalletRepository; - - public CustomerVoucherWalletService( - CustomerVoucherWalletRepository customerVoucherWalletRepository) { - this.customerVoucherWalletRepository = customerVoucherWalletRepository; - } - - public List findVoucherIdListByCustomerEmailAddress(EmailAddress emailAddress) { - return customerVoucherWalletRepository.findIdByCustomerEmailAddress(emailAddress); - } - - public void deleteByWallet(CustomerVoucherWalletDto customerVoucherWalletDto) { - CustomerVoucherWallet customerVoucherWallet = convertDtoToWallet(customerVoucherWalletDto); - customerVoucherWalletRepository.deleteByWallet(customerVoucherWallet); - } - - public CustomerVoucherWallet save(CustomerVoucherWalletDto customerVoucherWalletDto) { - CustomerVoucherWallet customerVoucherWallet = convertDtoToWallet(customerVoucherWalletDto); - return customerVoucherWalletRepository.save(customerVoucherWallet); - } - - public List findEmailAddressesByVoucherId(UUID voucherId) { - return customerVoucherWalletRepository.findEmailAddressesByVoucherId(voucherId); - } - - private static CustomerVoucherWallet convertDtoToWallet( - CustomerVoucherWalletDto customerVoucherWalletDto) { - return new CustomerVoucherWallet( - customerVoucherWalletDto.getVoucherId(), - new EmailAddress(customerVoucherWalletDto.getEmailAddress()) - ); - } - -} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/util/UUIDGenerator.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/util/UUIDGenerator.java similarity index 79% rename from voucher-manager/src/main/java/com/wonu606/vouchermanager/util/UUIDGenerator.java rename to voucher-manager/src/main/java/com/wonu606/vouchermanager/service/util/UUIDGenerator.java index 40171d08d6..a1f8944f8f 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/util/UUIDGenerator.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/util/UUIDGenerator.java @@ -1,4 +1,4 @@ -package com.wonu606.vouchermanager.util; +package com.wonu606.vouchermanager.service.util; import java.util.UUID; import org.springframework.stereotype.Component; diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/VoucherFactory.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/VoucherFactory.java index 50377be012..426ab372b0 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/VoucherFactory.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/VoucherFactory.java @@ -6,7 +6,7 @@ import com.wonu606.vouchermanager.domain.voucher.VoucherDto; import com.wonu606.vouchermanager.domain.voucher.discountvalue.FixedAmountValue; import com.wonu606.vouchermanager.domain.voucher.discountvalue.PercentageDiscountValue; -import com.wonu606.vouchermanager.util.UUIDGenerator; +import com.wonu606.vouchermanager.service.util.UUIDGenerator; import org.springframework.stereotype.Component; @Component diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/VoucherWalletService.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/VoucherWalletService.java new file mode 100644 index 0000000000..bb8e91b95e --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/VoucherWalletService.java @@ -0,0 +1,40 @@ +package com.wonu606.vouchermanager.service.voucherwallet; + +import com.wonu606.vouchermanager.domain.voucherwallet.VoucherWallet; +import com.wonu606.vouchermanager.domain.voucherwallet.VoucherWalletDto; +import com.wonu606.vouchermanager.domain.customer.email.Email; +import com.wonu606.vouchermanager.repository.voucherwallet.VoucherWalletRepository; +import java.util.List; +import java.util.UUID; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +@Component +@Transactional +public class VoucherWalletService { + + private final VoucherWalletRepository voucherWalletRepository; + + public VoucherWalletService( + VoucherWalletRepository voucherWalletRepository) { + this.voucherWalletRepository = voucherWalletRepository; + } + + public List findVoucherIdListByCustomerEmailAddress(Email email) { + return voucherWalletRepository.findIdByCustomerEmailAddress(email); + } + + public void deleteByWallet(VoucherWalletDto voucherWalletDto) { + VoucherWallet voucherWallet = voucherWalletDto.toEntity(); + voucherWalletRepository.deleteByWallet(voucherWallet); + } + + public VoucherWallet save(VoucherWalletDto voucherWalletDto) { + VoucherWallet voucherWallet = voucherWalletDto.toEntity(); + return voucherWalletRepository.save(voucherWallet); + } + + public List findEmailAddressesByVoucherId(UUID voucherId) { + return voucherWalletRepository.findEmailAddressesByVoucherId(voucherId); + } +} diff --git a/voucher-manager/src/main/resources/application.properties b/voucher-manager/src/main/resources/application.properties index 7256c72dbb..7b45edf02c 100644 --- a/voucher-manager/src/main/resources/application.properties +++ b/voucher-manager/src/main/resources/application.properties @@ -1,4 +1,4 @@ -spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver -spring.datasource.url=jdbc:mysql://localhost:3306/springboot_basic -spring.datasource.username=root -spring.datasource.password=1234 +#spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver +#spring.datasource.url=jdbc:mysql://localhost:3306/springboot_basic +#spring.datasource.username=root +#spring.datasource.password=1234 diff --git a/voucher-manager/src/main/resources/schema.sql b/voucher-manager/src/main/resources/schema.sql deleted file mode 100644 index a8e3a21c27..0000000000 --- a/voucher-manager/src/main/resources/schema.sql +++ /dev/null @@ -1,24 +0,0 @@ -CREATE TABLE voucher -( - voucher_id VARCHAR(36) PRIMARY KEY, - voucher_type VARCHAR(50) NOT NULL, - discount_value DECIMAL(10, 2) NOT NULL -); - -CREATE TABLE customer -( - email_address VARCHAR(100) PRIMARY KEY, - nickname VARCHAR(100), - last_updated TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - created_date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP -); - -CREATE TABLE customer_voucher_wallet -( - customer_email_address VARCHAR(100) NOT NULL, - voucher_id VARCHAR(36) NOT NULL, - - FOREIGN KEY (customer_email_address) REFERENCES customer (email_address) ON DELETE CASCADE, - FOREIGN KEY (voucher_id) REFERENCES voucher (voucher_id) ON DELETE CASCADE, - PRIMARY KEY (customer_email_address, voucher_id) -); diff --git a/voucher-manager/src/test/java/com/wonu606/vouchermanager/consoleInterface/VoucherConsoleInterfaceTest.java b/voucher-manager/src/test/java/com/wonu606/vouchermanager/console/controllercable/VoucherControllerCableTest.java similarity index 86% rename from voucher-manager/src/test/java/com/wonu606/vouchermanager/consoleInterface/VoucherConsoleInterfaceTest.java rename to voucher-manager/src/test/java/com/wonu606/vouchermanager/console/controllercable/VoucherControllerCableTest.java index 23ac6f4e2e..e3e8f1d2f1 100644 --- a/voucher-manager/src/test/java/com/wonu606/vouchermanager/consoleInterface/VoucherConsoleInterfaceTest.java +++ b/voucher-manager/src/test/java/com/wonu606/vouchermanager/console/controllercable/VoucherControllerCableTest.java @@ -1,15 +1,16 @@ -package com.wonu606.vouchermanager.consoleInterface; +package com.wonu606.vouchermanager.console.controllercable; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.BDDMockito.given; import static org.mockito.BDDMockito.then; import static org.mockito.Mockito.mock; +import com.wonu606.vouchermanager.console.controllercable.VoucherControllerCable; import com.wonu606.vouchermanager.controller.VoucherController; +import com.wonu606.vouchermanager.console.controllercable.menu.VoucherMenu; import com.wonu606.vouchermanager.domain.voucher.Voucher; import com.wonu606.vouchermanager.domain.voucher.VoucherDto; -import com.wonu606.vouchermanager.io.VoucherConsoleIO; -import com.wonu606.vouchermanager.menu.VoucherMenu; +import com.wonu606.vouchermanager.console.consoleio.concreate.VoucherConsoleIO; import java.util.Arrays; import java.util.List; import org.junit.jupiter.api.BeforeEach; @@ -18,9 +19,9 @@ import org.mockito.ArgumentCaptor; @DisplayName("VoucherConsoleInterface 테스트") -public class VoucherConsoleInterfaceTest { +public class VoucherControllerCableTest { - private VoucherConsoleInterface consoleInterface; + private VoucherControllerCable consoleInterface; private VoucherController controllerMock; @@ -31,7 +32,7 @@ public class VoucherConsoleInterfaceTest { public void setUp() { controllerMock = mock(VoucherController.class); voucherConsoleIOMock = mock(VoucherConsoleIO.class); - consoleInterface = new VoucherConsoleInterface(voucherConsoleIOMock, controllerMock); + consoleInterface = new VoucherControllerCable(voucherConsoleIOMock, controllerMock); } @DisplayName("exit가 입력으로 주어지고_run을 하면_프로그램이 종료된다.") diff --git a/voucher-manager/src/test/java/com/wonu606/vouchermanager/domain/customer/CustomerTest.java b/voucher-manager/src/test/java/com/wonu606/vouchermanager/domain/customer/CustomerTest.java index 78d4650f77..9e15bf79e8 100644 --- a/voucher-manager/src/test/java/com/wonu606/vouchermanager/domain/customer/CustomerTest.java +++ b/voucher-manager/src/test/java/com/wonu606/vouchermanager/domain/customer/CustomerTest.java @@ -2,7 +2,7 @@ import static org.assertj.core.api.Assertions.assertThat; -import com.wonu606.vouchermanager.domain.customer.emailAddress.EmailAddress; +import com.wonu606.vouchermanager.domain.customer.email.Email; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; @@ -16,12 +16,12 @@ class CustomerTest { public void constructor_EmailAddress_Success() { // Given String validAddress = "test@example.com"; - EmailAddress emailAddress = new EmailAddress(validAddress); + Email email = new Email(validAddress); // When - Customer customer = new Customer(emailAddress, "tempNickName"); + Customer customer = new Customer(email, "tempNickName"); // Then - assertThat(customer.getEmailAddress()).isEqualTo(emailAddress.getAddress()); + assertThat(customer.getEmailAddress()).isEqualTo(email.getAddress()); } } diff --git a/voucher-manager/src/test/java/com/wonu606/vouchermanager/domain/customer/EmailAddressTest.java b/voucher-manager/src/test/java/com/wonu606/vouchermanager/domain/customer/EmailTest.java similarity index 78% rename from voucher-manager/src/test/java/com/wonu606/vouchermanager/domain/customer/EmailAddressTest.java rename to voucher-manager/src/test/java/com/wonu606/vouchermanager/domain/customer/EmailTest.java index 7716fcf9bf..09af14a1d7 100644 --- a/voucher-manager/src/test/java/com/wonu606/vouchermanager/domain/customer/EmailAddressTest.java +++ b/voucher-manager/src/test/java/com/wonu606/vouchermanager/domain/customer/EmailTest.java @@ -3,23 +3,23 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; -import com.wonu606.vouchermanager.domain.customer.emailAddress.EmailAddress; +import com.wonu606.vouchermanager.domain.customer.email.Email; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; @DisplayName("EmailAddress 테스트") -class EmailAddressTest { +class EmailTest { @DisplayName("생성 시_유효한 이메일주소이라면_객체를 생성한다.") @ParameterizedTest @ValueSource(strings = {"hello@daum.net", "hello@daum.co.kr", "test@example.com"}) public void constructor_ValidEmailAddress_Created(String validAddress) { // When - EmailAddress actualEmailAddress = new EmailAddress(validAddress); + Email actualEmail = new Email(validAddress); // Then - assertThat(actualEmailAddress.getAddress()).isEqualTo(validAddress); + assertThat(actualEmail.getAddress()).isEqualTo(validAddress); } @DisplayName("생성 시_잘못된 이메일주소이라면_예외가 발생한다.") @@ -27,7 +27,7 @@ public void constructor_ValidEmailAddress_Created(String validAddress) { @ValueSource(strings = {"hello.@daum.net", "hello@daum..co.kr", "test@example.com1"}) public void constructor_InvalidEmailAddress_Exception(String invalidAddress) { // When & Then - assertThatThrownBy(() -> new EmailAddress(invalidAddress)) + assertThatThrownBy(() -> new Email(invalidAddress)) .isInstanceOf(IllegalArgumentException.class) .hasMessage("잘못된 이메일 주소입니다: " + invalidAddress); } diff --git a/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/customer/JdbcCustomerResultSetRepositoryTest.java b/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/customer/JdbcCustomerResultSetRepositoryTest.java index 8791c14308..85cbbbdf68 100644 --- a/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/customer/JdbcCustomerResultSetRepositoryTest.java +++ b/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/customer/JdbcCustomerResultSetRepositoryTest.java @@ -4,7 +4,7 @@ import com.wonu606.vouchermanager.domain.customer.Customer; import com.wonu606.vouchermanager.domain.customer.CustomerResultSet; -import com.wonu606.vouchermanager.domain.customer.emailAddress.EmailAddress; +import com.wonu606.vouchermanager.domain.customer.email.Email; import java.util.List; import java.util.Optional; import javax.sql.DataSource; @@ -33,14 +33,14 @@ void setUp() { void save_UnsavedCustomer_CustomerSaved() { // given Customer customer = new Customer( - new EmailAddress("Linlin@onepiece.org"), "Big Mom"); + new Email("Linlin@onepiece.org"), "Big Mom"); - EmailAddress emailAddress = new EmailAddress(customer.getEmailAddress()); + Email email = new Email(customer.getEmailAddress()); // when jdbcCustomerResultSetRepository.save(customer); var foundCustomer = jdbcCustomerResultSetRepository.findByEmailAddress( - emailAddress); + email); // then assertThat(foundCustomer).isPresent(); @@ -53,14 +53,14 @@ void save_UnsavedCustomer_CustomerSaved() { void findByEmailAddress_CustomerPresent_ReturnsSameCustomer() { // given Customer customer = new Customer( - new EmailAddress("Linlin@onepiece.org"), "Big Mom"); + new Email("Linlin@onepiece.org"), "Big Mom"); jdbcCustomerResultSetRepository.save(customer); - EmailAddress emailAddress = new EmailAddress(customer.getEmailAddress()); + Email email = new Email(customer.getEmailAddress()); // when var foundCustomer = - jdbcCustomerResultSetRepository.findByEmailAddress(emailAddress); + jdbcCustomerResultSetRepository.findByEmailAddress(email); // then assertThat(foundCustomer).isPresent(); @@ -71,11 +71,11 @@ void findByEmailAddress_CustomerPresent_ReturnsSameCustomer() { @DisplayName("findByEmailAddress_저장되지 않은 Customer_Empty를 반환한다.") void findByEmailAddress_UnsavedCustomer_ReturnsEmpty() { // given - EmailAddress unsavedEmailAddress = new EmailAddress("unsavedEmailAddress@domain.com"); + Email unsavedEmail = new Email("unsavedEmailAddress@domain.com"); // when var foundCustomer = - jdbcCustomerResultSetRepository.findByEmailAddress(unsavedEmailAddress); + jdbcCustomerResultSetRepository.findByEmailAddress(unsavedEmail); // then assertThat(foundCustomer).isNotPresent(); @@ -86,9 +86,9 @@ void findByEmailAddress_UnsavedCustomer_ReturnsEmpty() { void findAll_SavedCustomers_ReturnsAllCustomers() { // given Customer customer1 = new Customer( - new EmailAddress("Linlin@onepiece.org"), "Big Mom"); + new Email("Linlin@onepiece.org"), "Big Mom"); Customer customer2 = new Customer( - new EmailAddress("loopy@onepiece.org"), "Pirate King"); + new Email("loopy@onepiece.org"), "Pirate King"); jdbcCustomerResultSetRepository.save(customer1); jdbcCustomerResultSetRepository.save(customer2); @@ -106,15 +106,15 @@ void findAll_SavedCustomers_ReturnsAllCustomers() { void deleteByEmailAddress_SavedCustomer_CustomerDeleted() { // given Customer customer = new Customer( - new EmailAddress("Linlin@onepiece.org"), "Big Mom"); + new Email("Linlin@onepiece.org"), "Big Mom"); jdbcCustomerResultSetRepository.save(customer); - EmailAddress emailAddress = new EmailAddress(customer.getEmailAddress()); + Email email = new Email(customer.getEmailAddress()); // then - jdbcCustomerResultSetRepository.deleteByEmailAddress(emailAddress); + jdbcCustomerResultSetRepository.deleteByEmailAddress(email); Optional foundCustomer = jdbcCustomerResultSetRepository - .findByEmailAddress(emailAddress); + .findByEmailAddress(email); // when assertThat(foundCustomer).isNotPresent(); @@ -125,9 +125,9 @@ void deleteByEmailAddress_SavedCustomer_CustomerDeleted() { void deleteAll_MultipleCustomers_AllCustomersDeleted() { // given Customer customer1 = new Customer( - new EmailAddress("Linlin@onepiece.org"), "Big Mom"); + new Email("Linlin@onepiece.org"), "Big Mom"); Customer customer2 = new Customer( - new EmailAddress("loopy@onepiece.org"), "Pirate King"); + new Email("loopy@onepiece.org"), "Pirate King"); jdbcCustomerResultSetRepository.save(customer1); jdbcCustomerResultSetRepository.save(customer2); diff --git a/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/customer/MappingCustomerRepositoryTest.java b/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/customer/MappingCustomerRepositoryTest.java index 907e9eb860..9e80e07a9e 100644 --- a/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/customer/MappingCustomerRepositoryTest.java +++ b/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/customer/MappingCustomerRepositoryTest.java @@ -8,7 +8,7 @@ import com.wonu606.vouchermanager.domain.customer.Customer; import com.wonu606.vouchermanager.domain.customer.CustomerResultSet; -import com.wonu606.vouchermanager.domain.customer.emailAddress.EmailAddress; +import com.wonu606.vouchermanager.domain.customer.email.Email; import java.util.ArrayList; import java.util.List; import java.util.Optional; @@ -28,9 +28,9 @@ class MappingCustomerRepositoryTest { static Stream givenCustomers() { Customer customer1 = new Customer( - new EmailAddress("Linlin@onepiece.org"), "Big Mom"); + new Email("Linlin@onepiece.org"), "Big Mom"); Customer customer2 = new Customer( - new EmailAddress("loopy@onepiece.org"), "Pirate King"); + new Email("loopy@onepiece.org"), "Pirate King"); return Stream.of(Arguments.of(customer1, customer2)); } @@ -59,7 +59,7 @@ void save_VoucherProvided_ReturnVoucher() { void findByEmailAddress_ExistingEmailAddress_ReturnsExpectedCustomer() { // given Customer customer = new Customer( - new EmailAddress("Linlin@onepiece.org"), "Big Mom"); + new Email("Linlin@onepiece.org"), "Big Mom"); CustomerResultSet enteredResultSet = new CustomerResultSet( customer.getEmailAddress(), customer.getNickname(), @@ -67,13 +67,13 @@ void findByEmailAddress_ExistingEmailAddress_ReturnsExpectedCustomer() { null ); - EmailAddress emailAddress = new EmailAddress(customer.getEmailAddress()); + Email email = new Email(customer.getEmailAddress()); - given(customerResultSetRepository.findByEmailAddress(emailAddress)) + given(customerResultSetRepository.findByEmailAddress(email)) .willReturn(Optional.of(enteredResultSet)); // when - Optional actualCustomer = customerRepository.findByEmailAddress(emailAddress); + Optional actualCustomer = customerRepository.findByEmailAddress(email); // then assertThat(actualCustomer.isPresent()).isTrue(); @@ -112,13 +112,13 @@ void findAll_EmptyArgument_SavedAllCustomer(Customer customer1, Customer custome @DisplayName("deleteByEmailAddress_이메일 주소_같은 이메일 주소를 반환한다.") void deleteByEmailAddress_EmailAddress_ReturnsSameEmailAddress() { // given - EmailAddress expectedEmailAddress = new EmailAddress("Linlin@onepiece.org"); + Email expectedEmail = new Email("Linlin@onepiece.org"); // when - customerRepository.deleteByEmailAddress(expectedEmailAddress); + customerRepository.deleteByEmailAddress(expectedEmail); // then - verify(customerResultSetRepository, times(1)).deleteByEmailAddress(expectedEmailAddress); + verify(customerResultSetRepository, times(1)).deleteByEmailAddress(expectedEmail); } @Test diff --git a/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucher/MappingVoucherRepositoryTest.java b/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucher/MappingVoucherRepositoryTest.java index 39ca399d0c..ea0d3cce85 100644 --- a/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucher/MappingVoucherRepositoryTest.java +++ b/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucher/MappingVoucherRepositoryTest.java @@ -31,15 +31,6 @@ class MappingVoucherRepositoryTest { private MappingVoucherRepository voucherRepository; - static Stream givenVouchers() { - Voucher expectedVoucher1 = new PercentageVoucher( - UUID.randomUUID(), new PercentageDiscountValue(50.0)); - Voucher expectedVoucher2 = new FixedAmountVoucher( - UUID.randomUUID(), new FixedAmountValue(50.0)); - - return Stream.of(Arguments.of(expectedVoucher1, expectedVoucher2)); - } - @BeforeEach void setUp() { voucherResultSetRepository = mock(VoucherResultSetRepository.class); @@ -135,4 +126,13 @@ void deleteAll_EmptyArgument_ExecuteVoucherResultSetRepositoryDeleteAllMethod() // then verify(voucherResultSetRepository, times(1)).deleteAll(); } + + static Stream givenVouchers() { + Voucher expectedVoucher1 = new PercentageVoucher( + UUID.randomUUID(), new PercentageDiscountValue(50.0)); + Voucher expectedVoucher2 = new FixedAmountVoucher( + UUID.randomUUID(), new FixedAmountValue(50.0)); + + return Stream.of(Arguments.of(expectedVoucher1, expectedVoucher2)); + } } diff --git a/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/customerVoucherWallet/JdbcCustomerVoucherWalletRepositoryTest.java b/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucherwallet/JdbcVoucherWalletRepositoryTest.java similarity index 80% rename from voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/customerVoucherWallet/JdbcCustomerVoucherWalletRepositoryTest.java rename to voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucherwallet/JdbcVoucherWalletRepositoryTest.java index 1d94301977..9fd10fd0d2 100644 --- a/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/customerVoucherWallet/JdbcCustomerVoucherWalletRepositoryTest.java +++ b/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucherwallet/JdbcVoucherWalletRepositoryTest.java @@ -1,10 +1,10 @@ -package com.wonu606.vouchermanager.repository.customerVoucherWallet; +package com.wonu606.vouchermanager.repository.voucherwallet; import static org.assertj.core.api.Assertions.assertThat; -import com.wonu606.vouchermanager.domain.CustomerVoucherWallet.CustomerVoucherWallet; +import com.wonu606.vouchermanager.domain.voucherwallet.VoucherWallet; import com.wonu606.vouchermanager.domain.customer.Customer; -import com.wonu606.vouchermanager.domain.customer.emailAddress.EmailAddress; +import com.wonu606.vouchermanager.domain.customer.email.Email; import com.wonu606.vouchermanager.domain.voucher.FixedAmountVoucher; import com.wonu606.vouchermanager.domain.voucher.PercentageVoucher; import com.wonu606.vouchermanager.domain.voucher.Voucher; @@ -26,16 +26,16 @@ @JdbcTest @DisplayName("JdbcCustomerVoucherWalletRepository 테스트") -class JdbcCustomerVoucherWalletRepositoryTest { +class JdbcVoucherWalletRepositoryTest { - private JdbcCustomerVoucherWalletRepository customerVoucherWalletRepository; + private JdbcVoucherWalletRepository customerVoucherWalletRepository; @Autowired private DataSource dataSource; @BeforeEach void setUp() { - customerVoucherWalletRepository = new JdbcCustomerVoucherWalletRepository(dataSource); + customerVoucherWalletRepository = new JdbcVoucherWalletRepository(dataSource); JdbcVoucherResultSetRepository voucherResultSetRepository = new JdbcVoucherResultSetRepository(dataSource); @@ -50,9 +50,9 @@ void setUp() { voucherResultSetRepository.save(voucher); customerVoucherWalletRepository.save( - new CustomerVoucherWallet( + new VoucherWallet( voucher.getUuid(), - new EmailAddress(customer.getEmailAddress()))); + new Email(customer.getEmailAddress()))); } ); } @@ -63,11 +63,11 @@ void setUp() { void findVoucherIdByCustomerEmailAddress_SavedEmailAddress_ReturnsVoucherIds( Customer customer, Voucher voucher) { // given - EmailAddress emailAddress = new EmailAddress(customer.getEmailAddress()); + Email email = new Email(customer.getEmailAddress()); // when List actualUuids = - customerVoucherWalletRepository.findIdByCustomerEmailAddress(emailAddress); + customerVoucherWalletRepository.findIdByCustomerEmailAddress(email); // then assertThat(actualUuids).hasSize(1); @@ -79,13 +79,13 @@ void findVoucherIdByCustomerEmailAddress_SavedEmailAddress_ReturnsVoucherIds( @DisplayName("deleteByCustomerVoucherWallet_저장된 월렛이면_해당 월렛을 제거한다.") void deleteByCustomerVoucherWallet_SavedWallet_Deleted(Customer customer, Voucher voucher) { // given - CustomerVoucherWallet customerVoucherWallet = - new CustomerVoucherWallet( + VoucherWallet voucherWallet = + new VoucherWallet( voucher.getUuid(), - new EmailAddress(customer.getEmailAddress())); + new Email(customer.getEmailAddress())); // when - customerVoucherWalletRepository.deleteByWallet(customerVoucherWallet); + customerVoucherWalletRepository.deleteByWallet(voucherWallet); // then List emailAddresses = @@ -112,9 +112,9 @@ void findEmailAddressesByVoucherId_SavedVoucherId_ReturnsEmailAddresses( static Stream givenCustomerVouchers() { Customer customer1 = new Customer( - new EmailAddress("Linlin@onepiece.org"), "Big Mom"); + new Email("Linlin@onepiece.org"), "Big Mom"); Customer customer2 = new Customer( - new EmailAddress("loopy@onepiece.org"), "Pirate King"); + new Email("loopy@onepiece.org"), "Pirate King"); UUID uuid1 = UUID.fromString("123e4567-e89b-12d3-a456-426614174000"); UUID uuid2 = UUID.fromString("123e4567-e89b-12d3-a456-426614174001"); diff --git a/voucher-manager/src/test/java/com/wonu606/vouchermanager/service/voucher/VoucherFactoryTest.java b/voucher-manager/src/test/java/com/wonu606/vouchermanager/service/voucher/VoucherFactoryTest.java index f24e9a8f2b..0c291a3f24 100644 --- a/voucher-manager/src/test/java/com/wonu606/vouchermanager/service/voucher/VoucherFactoryTest.java +++ b/voucher-manager/src/test/java/com/wonu606/vouchermanager/service/voucher/VoucherFactoryTest.java @@ -8,7 +8,7 @@ import com.wonu606.vouchermanager.domain.voucher.PercentageVoucher; import com.wonu606.vouchermanager.domain.voucher.Voucher; import com.wonu606.vouchermanager.domain.voucher.VoucherDto; -import com.wonu606.vouchermanager.util.UUIDGenerator; +import com.wonu606.vouchermanager.service.util.UUIDGenerator; import java.util.UUID; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; diff --git a/voucher-manager/src/test/resources/schema.sql b/voucher-manager/src/test/resources/schema.sql new file mode 100644 index 0000000000..60cfc01ae1 --- /dev/null +++ b/voucher-manager/src/test/resources/schema.sql @@ -0,0 +1,24 @@ +CREATE TABLE voucher +( + voucher_id VARCHAR(36) PRIMARY KEY, + voucher_type VARCHAR(50) NOT NULL, + discount_value DECIMAL(10, 2) NOT NULL +); + +CREATE TABLE customer +( + email VARCHAR(100) PRIMARY KEY, + nickname VARCHAR(100), + last_updated TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + created_date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP +); + +CREATE TABLE customer_voucher_wallet +( + customer_id VARCHAR(100) NOT NULL, + voucher_id VARCHAR(36) NOT NULL, + + FOREIGN KEY (customer_id) REFERENCES customer (email) ON DELETE CASCADE, + FOREIGN KEY (voucher_id) REFERENCES voucher (voucher_id) ON DELETE CASCADE, + PRIMARY KEY (customer_id, voucher_id) +); From 349c07b9034e2069ff0588a70c833e8fdd5ca52f Mon Sep 17 00:00:00 2001 From: wonu606 Date: Tue, 18 Jul 2023 17:43:47 +0900 Subject: [PATCH 02/37] =?UTF-8?q?refactor:=20console=20=ED=8C=A8=ED=82=A4?= =?UTF-8?q?=EC=A7=80=20=EA=B5=AC=EC=A1=B0=20=EB=B0=8F=20controller?= =?UTF-8?q?=EB=A7=8C=20=EC=9D=98=EC=A1=B4=ED=95=98=EB=8F=84=EB=A1=9D=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...tConsoleIO.java => AbstractConsoleIo.java} | 6 +- .../console/{consoleio => }/ConsoleInput.java | 2 +- .../{consoleio => }/ConsolePrinter.java | 2 +- .../cableadapter/FrontCableAdapter.java | 5 +- .../FrontConsoleIo.java | 11 ++- .../concreate/CustomerConsoleIO.java | 41 ---------- .../consoleio/concreate/VoucherConsoleIO.java | 53 ------------- .../CustomerControllerCable.java | 76 ------------------ .../VoucherControllerCable.java | 79 ------------------- .../customer/CustomerControllerCable.java | 74 +++++++++++++++++ .../CustomerControllerMenu.java} | 6 +- .../customer/io/CustomerConsoleIo.java | 39 +++++++++ .../voucher/VoucherControllerCable.java | 76 ++++++++++++++++++ .../VoucherControllerMenu.java} | 6 +- .../voucher/io/VoucherConsoleIo.java | 50 ++++++++++++ .../voucher/io/VoucherConsoleType.java | 24 ++++++ .../VoucherControllerCableTest.java | 30 +++---- 17 files changed, 296 insertions(+), 284 deletions(-) rename voucher-manager/src/main/java/com/wonu606/vouchermanager/console/{consoleio/AbstractConsoleIO.java => AbstractConsoleIo.java} (79%) rename voucher-manager/src/main/java/com/wonu606/vouchermanager/console/{consoleio => }/ConsoleInput.java (93%) rename voucher-manager/src/main/java/com/wonu606/vouchermanager/console/{consoleio => }/ConsolePrinter.java (88%) rename voucher-manager/src/main/java/com/wonu606/vouchermanager/console/{consoleio/concreate => cableadapter}/FrontConsoleIo.java (61%) delete mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/console/consoleio/concreate/CustomerConsoleIO.java delete mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/console/consoleio/concreate/VoucherConsoleIO.java delete mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/CustomerControllerCable.java delete mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/VoucherControllerCable.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/customer/CustomerControllerCable.java rename voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/{menu/CustomerMenu.java => customer/CustomerControllerMenu.java} (80%) create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/customer/io/CustomerConsoleIo.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/voucher/VoucherControllerCable.java rename voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/{menu/VoucherMenu.java => voucher/VoucherControllerMenu.java} (80%) create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/voucher/io/VoucherConsoleIo.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/voucher/io/VoucherConsoleType.java rename voucher-manager/src/test/java/com/wonu606/vouchermanager/console/controllercable/{ => voucher}/VoucherControllerCableTest.java (69%) diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/consoleio/AbstractConsoleIO.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/AbstractConsoleIo.java similarity index 79% rename from voucher-manager/src/main/java/com/wonu606/vouchermanager/console/consoleio/AbstractConsoleIO.java rename to voucher-manager/src/main/java/com/wonu606/vouchermanager/console/AbstractConsoleIo.java index c1f73d51cc..aec2bba410 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/consoleio/AbstractConsoleIO.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/AbstractConsoleIo.java @@ -1,11 +1,11 @@ -package com.wonu606.vouchermanager.console.consoleio; +package com.wonu606.vouchermanager.console; -public abstract class AbstractConsoleIO { +public abstract class AbstractConsoleIo { protected final ConsoleInput input; protected final ConsolePrinter printer; - public AbstractConsoleIO(ConsoleInput input, ConsolePrinter printer) { + public AbstractConsoleIo(ConsoleInput input, ConsolePrinter printer) { this.input = input; this.printer = printer; } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/consoleio/ConsoleInput.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/ConsoleInput.java similarity index 93% rename from voucher-manager/src/main/java/com/wonu606/vouchermanager/console/consoleio/ConsoleInput.java rename to voucher-manager/src/main/java/com/wonu606/vouchermanager/console/ConsoleInput.java index 659e830dad..36124e50da 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/consoleio/ConsoleInput.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/ConsoleInput.java @@ -1,4 +1,4 @@ -package com.wonu606.vouchermanager.console.consoleio; +package com.wonu606.vouchermanager.console; import java.util.List; import org.beryx.textio.TextIO; diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/consoleio/ConsolePrinter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/ConsolePrinter.java similarity index 88% rename from voucher-manager/src/main/java/com/wonu606/vouchermanager/console/consoleio/ConsolePrinter.java rename to voucher-manager/src/main/java/com/wonu606/vouchermanager/console/ConsolePrinter.java index 46710a0ba3..3aa67cb3c3 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/consoleio/ConsolePrinter.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/ConsolePrinter.java @@ -1,4 +1,4 @@ -package com.wonu606.vouchermanager.console.consoleio; +package com.wonu606.vouchermanager.console; import org.beryx.textio.TextIoFactory; import org.beryx.textio.TextTerminal; diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/cableadapter/FrontCableAdapter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/cableadapter/FrontCableAdapter.java index 264c3d12b8..c046f7d89d 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/cableadapter/FrontCableAdapter.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/cableadapter/FrontCableAdapter.java @@ -1,8 +1,7 @@ package com.wonu606.vouchermanager.console.cableadapter; -import com.wonu606.vouchermanager.console.controllercable.CustomerControllerCable; -import com.wonu606.vouchermanager.console.controllercable.VoucherControllerCable; -import com.wonu606.vouchermanager.console.consoleio.concreate.FrontConsoleIo; +import com.wonu606.vouchermanager.console.controllercable.customer.CustomerControllerCable; +import com.wonu606.vouchermanager.console.controllercable.voucher.VoucherControllerCable; import org.springframework.stereotype.Component; @Component diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/consoleio/concreate/FrontConsoleIo.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/cableadapter/FrontConsoleIo.java similarity index 61% rename from voucher-manager/src/main/java/com/wonu606/vouchermanager/console/consoleio/concreate/FrontConsoleIo.java rename to voucher-manager/src/main/java/com/wonu606/vouchermanager/console/cableadapter/FrontConsoleIo.java index bfa7bedf36..2d191d2417 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/consoleio/concreate/FrontConsoleIo.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/cableadapter/FrontConsoleIo.java @@ -1,13 +1,12 @@ -package com.wonu606.vouchermanager.console.consoleio.concreate; +package com.wonu606.vouchermanager.console.cableadapter; -import com.wonu606.vouchermanager.console.consoleio.AbstractConsoleIO; -import com.wonu606.vouchermanager.console.consoleio.ConsoleInput; -import com.wonu606.vouchermanager.console.cableadapter.ConsoleMenu; -import com.wonu606.vouchermanager.console.consoleio.ConsolePrinter; +import com.wonu606.vouchermanager.console.AbstractConsoleIo; +import com.wonu606.vouchermanager.console.ConsoleInput; +import com.wonu606.vouchermanager.console.ConsolePrinter; import org.springframework.stereotype.Component; @Component -public class FrontConsoleIo extends AbstractConsoleIO { +public class FrontConsoleIo extends AbstractConsoleIo { public FrontConsoleIo(ConsoleInput input, ConsolePrinter printer) { super(input, printer); diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/consoleio/concreate/CustomerConsoleIO.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/consoleio/concreate/CustomerConsoleIO.java deleted file mode 100644 index 92490c9184..0000000000 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/consoleio/concreate/CustomerConsoleIO.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.wonu606.vouchermanager.console.consoleio.concreate; - -import com.wonu606.vouchermanager.console.consoleio.ConsoleInput; -import com.wonu606.vouchermanager.domain.customer.Customer; -import com.wonu606.vouchermanager.domain.voucher.Voucher; -import com.wonu606.vouchermanager.console.controllercable.menu.CustomerMenu; -import com.wonu606.vouchermanager.console.consoleio.AbstractConsoleIO; -import com.wonu606.vouchermanager.console.consoleio.ConsolePrinter; -import java.util.List; -import org.springframework.stereotype.Component; - -@Component -public class CustomerConsoleIO extends AbstractConsoleIO { - - public CustomerConsoleIO(ConsoleInput input, ConsolePrinter printer) { - super(input, printer); - } - - @Override - public CustomerMenu selectMenu() { - displayMenu(); - String menuSelection = input.readString(CustomerMenu.getAllNames(), "Menu"); - return CustomerMenu.getTypeByName(menuSelection); - } - - protected void displayMenu() { - String lineFormat = "Type %s to %s the program.\n"; - CustomerMenu.getAllNames().forEach(n -> - printer.displayMessage(String.format(lineFormat, n, n))); - } - - public void displayCustomerList(List customerList) { - printer.displayMessage("=== 보유한 Customer 리스트 ==="); - customerList.forEach(c -> printer.displayMessage(c.toString())); - } - - public void displayVoucherList(List voucherList) { - printer.displayMessage("=== 보유한 바우처 리스트 ==="); - voucherList.forEach(v -> printer.displayMessage(v.toString())); - } -} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/consoleio/concreate/VoucherConsoleIO.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/consoleio/concreate/VoucherConsoleIO.java deleted file mode 100644 index 2f2f7e1dac..0000000000 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/consoleio/concreate/VoucherConsoleIO.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.wonu606.vouchermanager.console.consoleio.concreate; - -import com.wonu606.vouchermanager.domain.customer.Customer; -import com.wonu606.vouchermanager.domain.voucher.Voucher; -import com.wonu606.vouchermanager.console.controllercable.menu.VoucherMenu; -import com.wonu606.vouchermanager.console.consoleio.AbstractConsoleIO; -import com.wonu606.vouchermanager.console.consoleio.ConsoleInput; -import com.wonu606.vouchermanager.console.consoleio.ConsolePrinter; -import com.wonu606.vouchermanager.service.voucher.VoucherType; -import java.util.List; -import org.springframework.stereotype.Component; - -@Component -public class VoucherConsoleIO extends AbstractConsoleIO { - - public VoucherConsoleIO(ConsoleInput input, ConsolePrinter printer) { - super(input, printer); - } - - @Override - public VoucherMenu selectMenu() { - displayMenu(); - String menuSelection = input.readString(VoucherMenu.getAllNames(), "Menu"); - return VoucherMenu.getTypeByName(menuSelection); - } - - public String selectVoucherType() { - displayVoucherTypes(); - return input.readString(VoucherType.getAllNames(), "Type"); - } - - public void displayVoucherList(List voucherList) { - printer.displayMessage("=== 바우처 리스트 ==="); - voucherList.forEach(v -> printer.displayMessage(v.toString())); - } - - public void displayCustomerList(List customerList) { - printer.displayMessage("=== 보유한 Customer 리스트 ==="); - customerList.forEach(c -> printer.displayMessage(c.toString())); - } - - protected void displayMenu() { - String lineFormat = "Type %s to %s the program.\n"; - VoucherMenu.getAllNames().forEach(n -> - printer.displayMessage(String.format(lineFormat, n, n))); - } - - private void displayVoucherTypes() { - printer.displayMessage("=== 바우처 타입 ==="); - VoucherType.getAllNames() - .forEach(n -> printer.displayMessage("[" + n + "]")); - } -} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/CustomerControllerCable.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/CustomerControllerCable.java deleted file mode 100644 index 37e8cd0c62..0000000000 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/CustomerControllerCable.java +++ /dev/null @@ -1,76 +0,0 @@ -package com.wonu606.vouchermanager.console.controllercable; - -import com.wonu606.vouchermanager.controller.CustomerController; -import com.wonu606.vouchermanager.console.controllercable.menu.CustomerMenu; -import com.wonu606.vouchermanager.domain.customer.Customer; -import com.wonu606.vouchermanager.domain.customer.CustomerDto; -import com.wonu606.vouchermanager.domain.voucher.Voucher; -import com.wonu606.vouchermanager.console.consoleio.concreate.CustomerConsoleIO; -import java.util.List; -import org.springframework.stereotype.Component; - -@Component -public class CustomerControllerCable { - - private final CustomerConsoleIO customerConsoleIO; - private final CustomerController customerController; - - public CustomerControllerCable(CustomerConsoleIO customerConsoleIO, - CustomerController customerController) { - this.customerConsoleIO = customerConsoleIO; - this.customerController = customerController; - } - - public void run() { - CustomerMenu menu = CustomerMenu.START; - while (menu.isNotExit()) { - try { - menu = customerConsoleIO.selectMenu(); - executeMenuAction(menu); - } catch (Exception exception) { - customerConsoleIO.displayMessage(exception.getMessage()); - } - } - } - - private void executeMenuAction(CustomerMenu menu) { - switch (menu) { - case EXIT: - return; - case CREATE: - CustomerDto customerDtoToCreate = createCustomerDto(); - customerController.createCustomer(customerDtoToCreate); - return; - - case LIST: - List customerList = customerController.getCustomerList(); - customerConsoleIO.displayCustomerList(customerList); - return; - - case VOUCHER_LIST: - String emailAddress = customerConsoleIO.readString("Email Address"); - List voucherListOwned = - customerController.getVouchersOwnedByCustomer(emailAddress); - customerConsoleIO.displayVoucherList(voucherListOwned); - return; - - case DELETE: - String emailAddressToDelete = customerConsoleIO.readString( - "Email Address To be Deleted"); - String voucherIdToDelete = customerConsoleIO.readString( - "Voucher UUID To be Deleted" - ); - customerController.deleteWallet(emailAddressToDelete, voucherIdToDelete); - return; - - default: - throw new IllegalArgumentException("수행할 수 없는 메뉴입니다."); - } - } - - private CustomerDto createCustomerDto() { - String emailAddress = customerConsoleIO.readString("Email Address"); - String nickName = customerConsoleIO.readString("Nickname"); - return new CustomerDto(emailAddress, nickName); - } -} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/VoucherControllerCable.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/VoucherControllerCable.java deleted file mode 100644 index e202084bd6..0000000000 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/VoucherControllerCable.java +++ /dev/null @@ -1,79 +0,0 @@ -package com.wonu606.vouchermanager.console.controllercable; - -import com.wonu606.vouchermanager.console.controllercable.menu.VoucherMenu; -import com.wonu606.vouchermanager.controller.VoucherController; -import com.wonu606.vouchermanager.domain.voucherwallet.VoucherWalletDto; -import com.wonu606.vouchermanager.domain.customer.Customer; -import com.wonu606.vouchermanager.domain.voucher.Voucher; -import com.wonu606.vouchermanager.domain.voucher.VoucherDto; -import com.wonu606.vouchermanager.console.consoleio.concreate.VoucherConsoleIO; -import java.util.List; -import java.util.UUID; -import org.springframework.stereotype.Component; - -@Component -public class VoucherControllerCable { - - private final VoucherConsoleIO voucherConsoleIO; - private final VoucherController controller; - - public VoucherControllerCable(VoucherConsoleIO voucherConsoleIO, - VoucherController controller) { - this.voucherConsoleIO = voucherConsoleIO; - this.controller = controller; - } - - public void run() { - VoucherMenu menu = VoucherMenu.START; - while (menu.isNotExit()) { - try { - menu = voucherConsoleIO.selectMenu(); - executeMenuAction(menu); - } catch (Exception exception) { - voucherConsoleIO.displayMessage(exception.getMessage()); - } - } - } - - private void executeMenuAction(VoucherMenu menu) { - switch (menu) { - case EXIT: - return; - - case LIST: - List voucherList = controller.getVoucherList(); - voucherConsoleIO.displayVoucherList(voucherList); - return; - - case CREATE: - VoucherDto voucherDto = createVoucherDto(); - controller.createVoucher(voucherDto); - return; - case ASSIGN: - VoucherWalletDto walletDto = createWalletDto(); - controller.assignWallet(walletDto); - return; - - case CUSTOMER_LIST: - String voucherUuId = voucherConsoleIO.readString("Voucher UUID"); - List customerList = controller.getCustomersOwnedByVoucherId(voucherUuId); - voucherConsoleIO.displayCustomerList(customerList); - return; - - default: - throw new IllegalArgumentException("수행할 수 없는 메뉴입니다."); - } - } - - private VoucherWalletDto createWalletDto() { - String uuid = voucherConsoleIO.readString("Voucher UUID"); - String emailAddress = voucherConsoleIO.readString("Customer EmailAddress"); - return new VoucherWalletDto(UUID.fromString(uuid), emailAddress); - } - - private VoucherDto createVoucherDto() { - String type = voucherConsoleIO.selectVoucherType(); - double discountValue = voucherConsoleIO.readDouble("discount"); - return new VoucherDto(type, discountValue); - } -} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/customer/CustomerControllerCable.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/customer/CustomerControllerCable.java new file mode 100644 index 0000000000..153e7d3a8a --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/customer/CustomerControllerCable.java @@ -0,0 +1,74 @@ +package com.wonu606.vouchermanager.console.controllercable.customer; + +import com.wonu606.vouchermanager.console.controllercable.customer.io.CustomerConsoleIo; +import com.wonu606.vouchermanager.controller.CustomerController; +import java.util.List; +import javax.swing.Spring; +import org.springframework.stereotype.Component; + +@Component +public class CustomerControllerCable { + + private final CustomerConsoleIo consoleIo; + private final CustomerController controller; + + public CustomerControllerCable(CustomerConsoleIo consoleIo, + CustomerController controller) { + this.consoleIo = consoleIo; + this.controller = controller; + } + + public void run() { + CustomerControllerMenu menu = CustomerControllerMenu.START; + while (menu.isNotExit()) { + try { + menu = consoleIo.selectMenu(); + executeMenuAction(menu); + } catch (Exception exception) { + consoleIo.displayMessage(exception.getMessage()); + } + } + } + + private void executeMenuAction(CustomerControllerMenu menu) { + switch (menu) { + case EXIT: + return; + case CREATE: + CustomerCreateRequest customerCreateRequest = createCustomerCreateRequest(); + controller.createCustomer(customerCreateRequest); + return; + + case LIST: + List CustomerResponses = controller.getCustomerList(); + consoleIo.displayCustomerList(CustomerResponses); + return; + + case VOUCHER_LIST: + String searchedCustomerId = consoleIo.readString("CustomerId"); + List VoucherResponses = + controller.getVouchersOwnedByCustomer(CustomerGetRequest); + consoleIo.displayVoucherList(consoleVoucherResponses); + return; + + case DELETE: + String deletionCustomerId = consoleIo.readString( + "CustomerId To be Deleted"); + String deletionVoucherId = consoleIo.readString( + "VoucherId To be Deleted" + ); + controller.deleteWallet( + new WalletDeleteRequest(deletionVoucherId, deletionCustomerId)); + return; + + default: + throw new IllegalArgumentException("수행할 수 없는 메뉴입니다."); + } + } + + private CustomerCreateRequest createCustomerCreateRequest() { + String creationEmail = consoleIo.readString("Email"); + String creationNickName = consoleIo.readString("Nickname"); + return new CustomerCreateRequest(creationEmail, creationNickName); + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/menu/CustomerMenu.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/customer/CustomerControllerMenu.java similarity index 80% rename from voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/menu/CustomerMenu.java rename to voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/customer/CustomerControllerMenu.java index b965e3a1be..b588ba821a 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/menu/CustomerMenu.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/customer/CustomerControllerMenu.java @@ -1,11 +1,11 @@ -package com.wonu606.vouchermanager.console.controllercable.menu; +package com.wonu606.vouchermanager.console.controllercable.customer; import java.util.Arrays; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; -public enum CustomerMenu { +public enum CustomerControllerMenu { START, EXIT, CREATE, @@ -13,7 +13,7 @@ public enum CustomerMenu { VOUCHER_LIST, DELETE; - public static CustomerMenu getTypeByName(String name) { + public static CustomerControllerMenu getTypeByName(String name) { return Arrays.stream(values()) .filter(c -> Objects.equals(c.name(), name.toUpperCase())) .findFirst() diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/customer/io/CustomerConsoleIo.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/customer/io/CustomerConsoleIo.java new file mode 100644 index 0000000000..1c4960f591 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/customer/io/CustomerConsoleIo.java @@ -0,0 +1,39 @@ +package com.wonu606.vouchermanager.console.controllercable.customer.io; + +import com.wonu606.vouchermanager.console.AbstractConsoleIo; +import com.wonu606.vouchermanager.console.ConsoleInput; +import com.wonu606.vouchermanager.console.ConsolePrinter; +import com.wonu606.vouchermanager.console.controllercable.customer.CustomerControllerMenu; +import java.util.List; +import org.springframework.stereotype.Component; + +@Component +public class CustomerConsoleIo extends AbstractConsoleIo { + + public CustomerConsoleIo(ConsoleInput input, ConsolePrinter printer) { + super(input, printer); + } + + @Override + public CustomerControllerMenu selectMenu() { + displayMenu(); + String menuSelection = input.readString(CustomerControllerMenu.getAllNames(), "Menu"); + return CustomerControllerMenu.getTypeByName(menuSelection); + } + + protected void displayMenu() { + String lineFormat = "Type %s to %s the program.\n"; + CustomerControllerMenu.getAllNames().forEach(n -> + printer.displayMessage(String.format(lineFormat, n, n))); + } + + public void displayCustomerList(List customerResponses) { + printer.displayMessage("=== 보유한 Customer 리스트 ==="); + customerResponses.forEach(response -> printer.displayMessage(response.toString())); + } + + public void displayVoucherList(List VoucherResponses) { + printer.displayMessage("=== 보유한 바우처 리스트 ==="); + VoucherResponses.forEach(response -> printer.displayMessage(response.toString())); + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/voucher/VoucherControllerCable.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/voucher/VoucherControllerCable.java new file mode 100644 index 0000000000..708a08ab02 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/voucher/VoucherControllerCable.java @@ -0,0 +1,76 @@ +package com.wonu606.vouchermanager.console.controllercable.voucher; + +import com.wonu606.vouchermanager.console.controllercable.voucher.io.VoucherConsoleIo; +import com.wonu606.vouchermanager.controller.VoucherController; +import com.wonu606.vouchermanager.domain.voucherwallet.VoucherWalletDto; +import com.wonu606.vouchermanager.domain.customer.Customer; +import java.util.List; +import java.util.UUID; +import org.springframework.stereotype.Component; + +@Component +public class VoucherControllerCable { + + private final VoucherConsoleIo consoleIo; + private final VoucherController controller; + + public VoucherControllerCable(VoucherConsoleIo consoleIo, + VoucherController controller) { + this.consoleIo = consoleIo; + this.controller = controller; + } + + public void run() { + VoucherControllerMenu menu = VoucherControllerMenu.START; + while (menu.isNotExit()) { + try { + menu = consoleIo.selectMenu(); + executeMenuAction(menu); + } catch (Exception exception) { + consoleIo.displayMessage(exception.getMessage()); + } + } + } + + private void executeMenuAction(VoucherControllerMenu menu) { + switch (menu) { + case EXIT: + return; + + case LIST: + List voucherResponses = controller.getVoucherList(); + consoleIo.displayVoucherList(voucherResponses); + return; + + case CREATE: + VoucherCreateRequest voucherCreateRequest = createVoucherCreateRequest(); + controller.createVoucher(voucherCreateRequest); + return; + case ASSIGN: + VoucherWalletCreateRequest voucherWalletCreateRequest = createVoucherWalletCreateRequest(); + controller.assignWallet(voucherWalletCreateRequest); + return; + + case CUSTOMER_LIST: + String voucherId = consoleIo.readString("VoucherId"); + List customerResponses = controller.getCustomersOwnedByVoucherId(voucherId); + consoleIo.displayCustomerList(customerResponses); + return; + + default: + throw new IllegalArgumentException("수행할 수 없는 메뉴입니다."); + } + } + + private VoucherWalletCreateRequest createVoucherWalletCreateRequest() { + String uuid = consoleIo.readString("Voucher UUID"); + String emailAddress = consoleIo.readString("Customer EmailAddress"); + return new VoucherWalletCreateRequest(uuid, emailAddress); + } + + private VoucherCreateRequest createVoucherCreateRequest() { + String type = consoleIo.selectVoucherType(); + double discountValue = consoleIo.readDouble("discount"); + return new VoucherCreateRequest(type, discountValue); + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/menu/VoucherMenu.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/voucher/VoucherControllerMenu.java similarity index 80% rename from voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/menu/VoucherMenu.java rename to voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/voucher/VoucherControllerMenu.java index cafa50d30e..c69c0b3ff6 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/menu/VoucherMenu.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/voucher/VoucherControllerMenu.java @@ -1,11 +1,11 @@ -package com.wonu606.vouchermanager.console.controllercable.menu; +package com.wonu606.vouchermanager.console.controllercable.voucher; import java.util.Arrays; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; -public enum VoucherMenu { +public enum VoucherControllerMenu { START, EXIT, @@ -14,7 +14,7 @@ public enum VoucherMenu { ASSIGN, CUSTOMER_LIST; - public static VoucherMenu getTypeByName(String name) { + public static VoucherControllerMenu getTypeByName(String name) { return Arrays.stream(values()) .filter(v -> Objects.equals(v.name(), name.toUpperCase())) .findFirst() diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/voucher/io/VoucherConsoleIo.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/voucher/io/VoucherConsoleIo.java new file mode 100644 index 0000000000..a0e1029f58 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/voucher/io/VoucherConsoleIo.java @@ -0,0 +1,50 @@ +package com.wonu606.vouchermanager.console.controllercable.voucher.io; + +import com.wonu606.vouchermanager.console.AbstractConsoleIo; +import com.wonu606.vouchermanager.console.ConsoleInput; +import com.wonu606.vouchermanager.console.ConsolePrinter; +import com.wonu606.vouchermanager.console.controllercable.voucher.VoucherControllerMenu; +import java.util.List; +import org.springframework.stereotype.Component; + +@Component +public class VoucherConsoleIo extends AbstractConsoleIo { + + public VoucherConsoleIo(ConsoleInput input, ConsolePrinter printer) { + super(input, printer); + } + + @Override + public VoucherControllerMenu selectMenu() { + displayMenu(); + String menuSelection = input.readString(VoucherControllerMenu.getAllNames(), "Menu"); + return VoucherControllerMenu.getTypeByName(menuSelection); + } + + public String selectVoucherType() { + displayVoucherTypes(); + return input.readString(VoucherConsoleType.getAllNames(), "Type"); + } + + public void displayVoucherList(List voucherList) { + printer.displayMessage("=== 바우처 리스트 ==="); + voucherList.forEach(response -> printer.displayMessage(response.toString())); + } + + public void displayCustomerList(List customerList) { + printer.displayMessage("=== 보유한 Customer 리스트 ==="); + customerList.forEach(response -> printer.displayMessage(response.toString())); + } + + protected void displayMenu() { + String lineFormat = "Type %s to %s the program.\n"; + VoucherControllerMenu.getAllNames().forEach(n -> + printer.displayMessage(String.format(lineFormat, n, n))); + } + + private void displayVoucherTypes() { + printer.displayMessage("=== 바우처 타입 ==="); + VoucherConsoleType.getAllNames() + .forEach(n -> printer.displayMessage("[" + n + "]")); + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/voucher/io/VoucherConsoleType.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/voucher/io/VoucherConsoleType.java new file mode 100644 index 0000000000..9fca77d14f --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/voucher/io/VoucherConsoleType.java @@ -0,0 +1,24 @@ +package com.wonu606.vouchermanager.console.controllercable.voucher.io; + +import com.wonu606.vouchermanager.service.voucher.VoucherType; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +public enum VoucherConsoleType { + FIXED, + PERCENT; + + public static VoucherType getVoucherTypeByName(String name) { + return Arrays.stream(VoucherType.values()) + .filter(v -> v.name().equals(name.toUpperCase())) + .findFirst() + .orElseThrow(() -> new IllegalArgumentException("존재하지 않는 바우처 타입입니다.")); + } + + public static List getAllNames() { + return Arrays.stream(VoucherType.values()) + .map(v -> v.name().toLowerCase()) + .collect(Collectors.toList()); + } +} diff --git a/voucher-manager/src/test/java/com/wonu606/vouchermanager/console/controllercable/VoucherControllerCableTest.java b/voucher-manager/src/test/java/com/wonu606/vouchermanager/console/controllercable/voucher/VoucherControllerCableTest.java similarity index 69% rename from voucher-manager/src/test/java/com/wonu606/vouchermanager/console/controllercable/VoucherControllerCableTest.java rename to voucher-manager/src/test/java/com/wonu606/vouchermanager/console/controllercable/voucher/VoucherControllerCableTest.java index e3e8f1d2f1..769e7cd7e8 100644 --- a/voucher-manager/src/test/java/com/wonu606/vouchermanager/console/controllercable/VoucherControllerCableTest.java +++ b/voucher-manager/src/test/java/com/wonu606/vouchermanager/console/controllercable/voucher/VoucherControllerCableTest.java @@ -1,16 +1,16 @@ -package com.wonu606.vouchermanager.console.controllercable; +package com.wonu606.vouchermanager.console.controllercable.voucher; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.BDDMockito.given; import static org.mockito.BDDMockito.then; import static org.mockito.Mockito.mock; -import com.wonu606.vouchermanager.console.controllercable.VoucherControllerCable; +import com.wonu606.vouchermanager.console.controllercable.voucher.io.VoucherConsoleIo; +import com.wonu606.vouchermanager.console.controllercable.voucher.VoucherControllerCable; import com.wonu606.vouchermanager.controller.VoucherController; -import com.wonu606.vouchermanager.console.controllercable.menu.VoucherMenu; +import com.wonu606.vouchermanager.console.controllercable.voucher.VoucherControllerMenu; import com.wonu606.vouchermanager.domain.voucher.Voucher; import com.wonu606.vouchermanager.domain.voucher.VoucherDto; -import com.wonu606.vouchermanager.console.consoleio.concreate.VoucherConsoleIO; import java.util.Arrays; import java.util.List; import org.junit.jupiter.api.BeforeEach; @@ -25,28 +25,28 @@ public class VoucherControllerCableTest { private VoucherController controllerMock; - private VoucherConsoleIO voucherConsoleIOMock; + private VoucherConsoleIo voucherConsoleIoMock; @BeforeEach public void setUp() { controllerMock = mock(VoucherController.class); - voucherConsoleIOMock = mock(VoucherConsoleIO.class); - consoleInterface = new VoucherControllerCable(voucherConsoleIOMock, controllerMock); + voucherConsoleIoMock = mock(VoucherConsoleIo.class); + consoleInterface = new VoucherControllerCable(voucherConsoleIoMock, controllerMock); } @DisplayName("exit가 입력으로 주어지고_run을 하면_프로그램이 종료된다.") @Test public void GivenExitMenuSelected_WhenRun_ThenTerminatesProgram() { // Given - given(voucherConsoleIOMock.selectMenu()).willReturn(VoucherMenu.EXIT); + given(voucherConsoleIoMock.selectMenu()).willReturn(VoucherControllerMenu.EXIT); // When consoleInterface.run(); // then - then(voucherConsoleIOMock).should().selectMenu(); - then(voucherConsoleIOMock).shouldHaveNoMoreInteractions(); + then(voucherConsoleIoMock).should().selectMenu(); + then(voucherConsoleIoMock).shouldHaveNoMoreInteractions(); } @DisplayName("list가 입력으로 주어지고_run을 하면_Voucher들을 출력한다.") @@ -54,14 +54,14 @@ public void GivenExitMenuSelected_WhenRun_ThenTerminatesProgram() { public void GivenListMenuSelected_WhenRun_ThenDisplayVoucherList() { // Given List voucherList = Arrays.asList(mock(Voucher.class), mock(Voucher.class)); - given(voucherConsoleIOMock.selectMenu()).willReturn(VoucherMenu.LIST, VoucherMenu.EXIT); + given(voucherConsoleIoMock.selectMenu()).willReturn(VoucherControllerMenu.LIST, VoucherControllerMenu.EXIT); given(controllerMock.getVoucherList()).willReturn(voucherList); // When consoleInterface.run(); // Then - then(voucherConsoleIOMock).should().displayVoucherList(voucherList); + then(voucherConsoleIoMock).should().displayVoucherList(voucherList); } @DisplayName("create가 입력으로 주어지고_run을 하면_Voucher를 생성하여 저장한다.") @@ -70,9 +70,9 @@ public void GivenCreateMenuSelected_WhenRun_ThenCreateVoucher() { // Given VoucherDto expectedDto = new VoucherDto("FIXED", 10.0); - given(voucherConsoleIOMock.selectMenu()).willReturn(VoucherMenu.CREATE, VoucherMenu.EXIT); - given(voucherConsoleIOMock.selectVoucherType()).willReturn("FIXED"); - given(voucherConsoleIOMock.readDouble("discount")).willReturn(10.0); + given(voucherConsoleIoMock.selectMenu()).willReturn(VoucherControllerMenu.CREATE, VoucherControllerMenu.EXIT); + given(voucherConsoleIoMock.selectVoucherType()).willReturn("FIXED"); + given(voucherConsoleIoMock.readDouble("discount")).willReturn(10.0); given(controllerMock.createVoucher(expectedDto)).willReturn(mock(Voucher.class)); From aa93ae3ad9b198043e66438f4e81f99e98d4e0a4 Mon Sep 17 00:00:00 2001 From: wonu606 Date: Tue, 18 Jul 2023 18:53:45 +0900 Subject: [PATCH 03/37] =?UTF-8?q?refactor:=20CustomerController=20?= =?UTF-8?q?=EA=B3=84=EC=B8=B5=20=EB=8F=84=EB=A9=94=EC=9D=B8=20=EC=9D=98?= =?UTF-8?q?=EC=A1=B4=EC=84=B1=20=EC=A0=9C=EA=B1=B0=20=EB=B0=8F=20DTO=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../customer/CustomerControllerCable.java | 12 ++- .../customer/io/CustomerConsoleIo.java | 3 +- .../voucher/VoucherControllerCable.java | 5 +- .../controller/CustomerController.java | 48 ----------- .../customer/CustomerController.java | 81 +++++++++++++++++++ .../CustomerCreateResponseConverter.java | 5 ++ ...tomerGetOwnedVoucherResponseConverter.java | 5 ++ .../request/CustomerCreateRequest.java | 20 +++++ .../CustomerGetOwnedVoucherRequest.java | 14 ++++ .../customer/request/WalletDeleteRequest.java | 20 +++++ .../response/CustomerCreateResponse.java | 19 +++++ .../CustomerGetOwnedVoucherResponse.java | 14 ++++ .../response/CustomerGetResponse.java | 21 +++++ .../customer/response/CustomerResponse.java | 21 +++++ .../{ => voucher}/VoucherController.java | 2 +- .../voucherwallet/VoucherWalletService.java | 2 +- .../voucher/VoucherControllerCableTest.java | 4 +- 17 files changed, 234 insertions(+), 62 deletions(-) delete mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/CustomerController.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/CustomerController.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/CustomerCreateResponseConverter.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/CustomerGetOwnedVoucherResponseConverter.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/request/CustomerCreateRequest.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/request/CustomerGetOwnedVoucherRequest.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/request/WalletDeleteRequest.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/response/CustomerCreateResponse.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/response/CustomerGetOwnedVoucherResponse.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/response/CustomerGetResponse.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/response/CustomerResponse.java rename voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/{ => voucher}/VoucherController.java (97%) diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/customer/CustomerControllerCable.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/customer/CustomerControllerCable.java index 153e7d3a8a..5774de549b 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/customer/CustomerControllerCable.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/customer/CustomerControllerCable.java @@ -1,9 +1,13 @@ package com.wonu606.vouchermanager.console.controllercable.customer; import com.wonu606.vouchermanager.console.controllercable.customer.io.CustomerConsoleIo; -import com.wonu606.vouchermanager.controller.CustomerController; +import com.wonu606.vouchermanager.controller.customer.CustomerController; +import com.wonu606.vouchermanager.controller.customer.request.CustomerCreateRequest; +import com.wonu606.vouchermanager.controller.customer.request.CustomerGetOwnedVoucherRequest; +import com.wonu606.vouchermanager.controller.customer.request.WalletDeleteRequest; +import com.wonu606.vouchermanager.controller.customer.response.CustomerResponse; +import com.wonu606.vouchermanager.controller.customer.response.CustomerGetOwnedVoucherResponse; import java.util.List; -import javax.swing.Spring; import org.springframework.stereotype.Component; @Component @@ -46,8 +50,8 @@ private void executeMenuAction(CustomerControllerMenu menu) { case VOUCHER_LIST: String searchedCustomerId = consoleIo.readString("CustomerId"); - List VoucherResponses = - controller.getVouchersOwnedByCustomer(CustomerGetRequest); + List VoucherResponses = controller.getOwnedVouchersByCustomer( + new CustomerGetOwnedVoucherRequest(searchedCustomerId)); consoleIo.displayVoucherList(consoleVoucherResponses); return; diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/customer/io/CustomerConsoleIo.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/customer/io/CustomerConsoleIo.java index 1c4960f591..d9f7b1bb9c 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/customer/io/CustomerConsoleIo.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/customer/io/CustomerConsoleIo.java @@ -4,6 +4,7 @@ import com.wonu606.vouchermanager.console.ConsoleInput; import com.wonu606.vouchermanager.console.ConsolePrinter; import com.wonu606.vouchermanager.console.controllercable.customer.CustomerControllerMenu; +import com.wonu606.vouchermanager.controller.customer.response.CustomerResponse; import java.util.List; import org.springframework.stereotype.Component; @@ -32,7 +33,7 @@ public void displayCustomerList(List customerResponses) { customerResponses.forEach(response -> printer.displayMessage(response.toString())); } - public void displayVoucherList(List VoucherResponses) { + public void displayVoucherList(List VoucherResponses) { printer.displayMessage("=== 보유한 바우처 리스트 ==="); VoucherResponses.forEach(response -> printer.displayMessage(response.toString())); } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/voucher/VoucherControllerCable.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/voucher/VoucherControllerCable.java index 708a08ab02..9504b18efe 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/voucher/VoucherControllerCable.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/voucher/VoucherControllerCable.java @@ -1,11 +1,8 @@ package com.wonu606.vouchermanager.console.controllercable.voucher; import com.wonu606.vouchermanager.console.controllercable.voucher.io.VoucherConsoleIo; -import com.wonu606.vouchermanager.controller.VoucherController; -import com.wonu606.vouchermanager.domain.voucherwallet.VoucherWalletDto; -import com.wonu606.vouchermanager.domain.customer.Customer; +import com.wonu606.vouchermanager.controller.voucher.VoucherController; import java.util.List; -import java.util.UUID; import org.springframework.stereotype.Component; @Component diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/CustomerController.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/CustomerController.java deleted file mode 100644 index 3e48f7f866..0000000000 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/CustomerController.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.wonu606.vouchermanager.controller; - -import com.wonu606.vouchermanager.domain.voucherwallet.VoucherWalletDto; -import com.wonu606.vouchermanager.domain.customer.Customer; -import com.wonu606.vouchermanager.domain.customer.CustomerDto; -import com.wonu606.vouchermanager.domain.customer.email.Email; -import com.wonu606.vouchermanager.domain.voucher.Voucher; -import com.wonu606.vouchermanager.service.customer.CustomerService; -import com.wonu606.vouchermanager.service.voucherwallet.VoucherWalletService; -import com.wonu606.vouchermanager.service.voucher.VoucherService; -import java.util.List; -import java.util.UUID; -import org.springframework.stereotype.Component; - -@Component -public class CustomerController { - - private final CustomerService customerService; - private final VoucherService voucherService; - private final VoucherWalletService walletService; - - public CustomerController(CustomerService customerService, VoucherService voucherService, - VoucherWalletService walletService) { - this.customerService = customerService; - this.voucherService = voucherService; - this.walletService = walletService; - } - - public Customer createCustomer(CustomerDto customerDto) { - Customer customer = customerService.createCustomer(customerDto); - return customerService.saveCustomer(customer); - } - - public List getCustomerList() { - return customerService.getCustomerList(); - } - - public List getVouchersOwnedByCustomer(String emailAddress) { - List voucherIdList = walletService.findVoucherIdListByCustomerEmailAddress( - new Email(emailAddress)); - return voucherService.getVoucherList(voucherIdList); - } - - public void deleteWallet(String emailAddress, String voucherId) { - walletService.deleteByWallet( - new VoucherWalletDto(UUID.fromString(voucherId), emailAddress)); - } -} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/CustomerController.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/CustomerController.java new file mode 100644 index 0000000000..f010770048 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/CustomerController.java @@ -0,0 +1,81 @@ +package com.wonu606.vouchermanager.controller.customer; + +import com.wonu606.vouchermanager.controller.customer.converter.CustomerCreateResponseConverter; +import com.wonu606.vouchermanager.controller.customer.converter.CustomerGetOwnedVoucherResponseConverter; +import com.wonu606.vouchermanager.controller.customer.request.CustomerCreateRequest; +import com.wonu606.vouchermanager.controller.customer.request.CustomerGetOwnedVoucherRequest; +import com.wonu606.vouchermanager.controller.customer.request.WalletDeleteRequest; +import com.wonu606.vouchermanager.controller.customer.response.CustomerCreateResponse; +import com.wonu606.vouchermanager.controller.customer.response.CustomerGetOwnedVoucherResponse; +import com.wonu606.vouchermanager.controller.customer.response.CustomerGetResponse; +import com.wonu606.vouchermanager.domain.customer.Customer; +import com.wonu606.vouchermanager.domain.voucher.Voucher; +import com.wonu606.vouchermanager.domain.voucherwallet.VoucherWalletDto; +import com.wonu606.vouchermanager.service.customer.CustomerService; +import com.wonu606.vouchermanager.service.voucher.VoucherService; +import com.wonu606.vouchermanager.service.voucherwallet.VoucherWalletService; +import java.util.List; +import java.util.UUID; +import java.util.stream.Collectors; +import org.springframework.stereotype.Component; + +@Component +public class CustomerController { + + private final CustomerService service; + + private final CustomerCreateResponseConverter customerCreateResponseConverter; + private final CustomerGetResponseConverter customerGetResponseConverter; + private final CustomerGetOwnedVoucherResponseConverter customerGetOwnedVoucherResponseConverter; + + public CustomerController(CustomerService service, VoucherService voucherService, + VoucherWalletService walletService) { + this.service = service; + this.voucherService = voucherService; + this.walletService = walletService; + } + + public Customer createCustomer(CustomerCreateRequest request) { + CustomerCreateParam param = createCustomerCreateParam(request); + CustomerCreateResult result = service.createCustomer(param); + + CustomerCreateResponse response = customerCreateResponseConverter.convert(result); + return service.saveCustomer(response); + } + + public List getCustomerList() { + List results = service.getCustomerList(); + List responses = results.stream() + .map(customerGetResponseConverter::convert) + .collect(Collectors.toList()); + return responses; + } + + public List getOwnedVouchersByCustomer(CustomerGetOwnedVoucherRequest request) { + CustomerGetOwnedVoucherParam param = createCustomerGetOwnedVoucherParam(request); + List results = service.findOwnedVoucherByCustomer(param); + + List responses = results.stream() + .map(customerGetOwnedVoucherResponseConverter::convert) + .collect(Collectors.toList()); + return responses; + } + + public void deleteWallet(WalletDeleteRequest request) { + WalletDeleteParam param = createWalletDeleteParam(request); + service.deleteWallet(param); + } + + private CustomerCreateParam createCustomerCreateParam(CustomerCreateRequest request) { + + } + + private CustomerGetOwnedVoucherParam createCustomerGetOwnedVoucherParam( + CustomerGetOwnedVoucherRequest request) { + + } + + private WalletDeleteParam createWalletDeleteParam(WalletDeleteRequest request) { + + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/CustomerCreateResponseConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/CustomerCreateResponseConverter.java new file mode 100644 index 0000000000..3a1b36ee4e --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/CustomerCreateResponseConverter.java @@ -0,0 +1,5 @@ +package com.wonu606.vouchermanager.controller.customer.converter; + +public class CustomerCreateResponseConverter { + +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/CustomerGetOwnedVoucherResponseConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/CustomerGetOwnedVoucherResponseConverter.java new file mode 100644 index 0000000000..c193e20285 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/CustomerGetOwnedVoucherResponseConverter.java @@ -0,0 +1,5 @@ +package com.wonu606.vouchermanager.controller.customer.converter; + +public class CustomerGetOwnedVoucherResponseConverter { + +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/request/CustomerCreateRequest.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/request/CustomerCreateRequest.java new file mode 100644 index 0000000000..5590eeb9c3 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/request/CustomerCreateRequest.java @@ -0,0 +1,20 @@ +package com.wonu606.vouchermanager.controller.customer.request; + +public class CustomerCreateRequest { + + private final String email; + private final String nickname; + + public CustomerCreateRequest(String email, String nickname) { + this.email = email; + this.nickname = nickname; + } + + public String getEmail() { + return email; + } + + public String getNickname() { + return nickname; + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/request/CustomerGetOwnedVoucherRequest.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/request/CustomerGetOwnedVoucherRequest.java new file mode 100644 index 0000000000..b8fb2f7233 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/request/CustomerGetOwnedVoucherRequest.java @@ -0,0 +1,14 @@ +package com.wonu606.vouchermanager.controller.customer.request; + +public class CustomerGetOwnedVoucherRequest { + + private final String customerId; + + public CustomerGetOwnedVoucherRequest(String customerId) { + this.customerId = customerId; + } + + public String getCustomerId() { + return customerId; + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/request/WalletDeleteRequest.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/request/WalletDeleteRequest.java new file mode 100644 index 0000000000..48a724d247 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/request/WalletDeleteRequest.java @@ -0,0 +1,20 @@ +package com.wonu606.vouchermanager.controller.customer.request; + +public class WalletDeleteRequest { + + private final String voucherId; + private final String customerId; + + public WalletDeleteRequest(String voucherId, String customerId) { + this.voucherId = voucherId; + this.customerId = customerId; + } + + public String getVoucherId() { + return voucherId; + } + + public String getCustomerId() { + return customerId; + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/response/CustomerCreateResponse.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/response/CustomerCreateResponse.java new file mode 100644 index 0000000000..5b28a28505 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/response/CustomerCreateResponse.java @@ -0,0 +1,19 @@ +package com.wonu606.vouchermanager.controller.customer.response; + +public class CustomerCreateResponse { + private final String email; + private final String nickname; + + public CustomerCreateResponse(String email, String nickname) { + this.email = email; + this.nickname = nickname; + } + + public String getEmail() { + return email; + } + + public String getNickname() { + return nickname; + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/response/CustomerGetOwnedVoucherResponse.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/response/CustomerGetOwnedVoucherResponse.java new file mode 100644 index 0000000000..5e8ff3cad2 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/response/CustomerGetOwnedVoucherResponse.java @@ -0,0 +1,14 @@ +package com.wonu606.vouchermanager.controller.customer.response; + +public class CustomerGetOwnedVoucherResponse { + private final String voucherId; + + public CustomerGetOwnedVoucherResponse(String classSimpleName, String voucherId, + String discountValueType, String discountValue) { + this.voucherId = voucherId; + } + + public String getVoucherId() { + return voucherId; + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/response/CustomerGetResponse.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/response/CustomerGetResponse.java new file mode 100644 index 0000000000..a2fa79fa53 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/response/CustomerGetResponse.java @@ -0,0 +1,21 @@ +package com.wonu606.vouchermanager.controller.customer.response; + +import com.wonu606.vouchermanager.domain.customer.email.Email; + +public class CustomerGetResponse { + private final Email email; + private final String nickname; + + public CustomerGetResponse(Email email, String nickname) { + this.email = email; + this.nickname = nickname; + } + + public String getEmailAddress() { + return email.getAddress(); + } + + public String getNickname() { + return nickname; + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/response/CustomerResponse.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/response/CustomerResponse.java new file mode 100644 index 0000000000..0f88666fc9 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/response/CustomerResponse.java @@ -0,0 +1,21 @@ +package com.wonu606.vouchermanager.controller.customer.response; + +import com.wonu606.vouchermanager.domain.customer.email.Email; + +public class CustomerResponse { + private final Email email; + private final String nickname; + + public CustomerResponse(Email email, String nickname) { + this.email = email; + this.nickname = nickname; + } + + public Email getEmail() { + return email; + } + + public String getNickname() { + return nickname; + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/VoucherController.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/VoucherController.java similarity index 97% rename from voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/VoucherController.java rename to voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/VoucherController.java index dadd85d7ee..b9a6b7b330 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/VoucherController.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/VoucherController.java @@ -1,4 +1,4 @@ -package com.wonu606.vouchermanager.controller; +package com.wonu606.vouchermanager.controller.voucher; import com.wonu606.vouchermanager.domain.voucherwallet.VoucherWalletDto; import com.wonu606.vouchermanager.domain.customer.Customer; diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/VoucherWalletService.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/VoucherWalletService.java index bb8e91b95e..9c38570323 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/VoucherWalletService.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/VoucherWalletService.java @@ -20,7 +20,7 @@ public VoucherWalletService( this.voucherWalletRepository = voucherWalletRepository; } - public List findVoucherIdListByCustomerEmailAddress(Email email) { + public List findOwnedVoucherByCustomer(Email email) { return voucherWalletRepository.findIdByCustomerEmailAddress(email); } diff --git a/voucher-manager/src/test/java/com/wonu606/vouchermanager/console/controllercable/voucher/VoucherControllerCableTest.java b/voucher-manager/src/test/java/com/wonu606/vouchermanager/console/controllercable/voucher/VoucherControllerCableTest.java index 769e7cd7e8..916ead7785 100644 --- a/voucher-manager/src/test/java/com/wonu606/vouchermanager/console/controllercable/voucher/VoucherControllerCableTest.java +++ b/voucher-manager/src/test/java/com/wonu606/vouchermanager/console/controllercable/voucher/VoucherControllerCableTest.java @@ -6,9 +6,7 @@ import static org.mockito.Mockito.mock; import com.wonu606.vouchermanager.console.controllercable.voucher.io.VoucherConsoleIo; -import com.wonu606.vouchermanager.console.controllercable.voucher.VoucherControllerCable; -import com.wonu606.vouchermanager.controller.VoucherController; -import com.wonu606.vouchermanager.console.controllercable.voucher.VoucherControllerMenu; +import com.wonu606.vouchermanager.controller.voucher.VoucherController; import com.wonu606.vouchermanager.domain.voucher.Voucher; import com.wonu606.vouchermanager.domain.voucher.VoucherDto; import java.util.Arrays; From f10d371970e76f9c2353a8b928ac36a9eec83cae Mon Sep 17 00:00:00 2001 From: wonu606 Date: Tue, 18 Jul 2023 20:09:33 +0900 Subject: [PATCH 04/37] =?UTF-8?q?refactor:=20voucher=20controller=20?= =?UTF-8?q?=EB=8F=84=EB=A9=94=EC=9D=B8=20=EC=9D=98=EC=A1=B4=EC=84=B1=20?= =?UTF-8?q?=EC=A0=9C=EA=B1=B0=20=EB=B0=8F=20DTO=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/voucher/VoucherController.java | 85 ++++++++++++------- .../VoucherCreateResponseConverter.java | 5 ++ ...herGetOwnedCustomersResponseConverter.java | 5 ++ .../VoucherGetResponseConverter.java | 5 ++ .../voucher/reqeust/VoucherCreateRequest.java | 20 +++++ .../VoucherGetOwnedCustomersRequest.java | 5 ++ .../voucher/reqeust/WalletAssignRequest.java | 22 +++++ .../response/VoucherCreateResponse.java | 20 +++++ .../VoucherGetOwnedCustomersResponse.java | 16 ++++ .../voucher/response/VoucherGetResponse.java | 16 ++++ 10 files changed, 168 insertions(+), 31 deletions(-) create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/VoucherCreateResponseConverter.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/VoucherGetOwnedCustomersResponseConverter.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/VoucherGetResponseConverter.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/reqeust/VoucherCreateRequest.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/reqeust/VoucherGetOwnedCustomersRequest.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/reqeust/WalletAssignRequest.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/response/VoucherCreateResponse.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/response/VoucherGetOwnedCustomersResponse.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/response/VoucherGetResponse.java diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/VoucherController.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/VoucherController.java index b9a6b7b330..83d832b3b9 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/VoucherController.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/VoucherController.java @@ -1,50 +1,73 @@ package com.wonu606.vouchermanager.controller.voucher; -import com.wonu606.vouchermanager.domain.voucherwallet.VoucherWalletDto; -import com.wonu606.vouchermanager.domain.customer.Customer; -import com.wonu606.vouchermanager.domain.customer.email.Email; -import com.wonu606.vouchermanager.domain.voucher.Voucher; -import com.wonu606.vouchermanager.domain.voucher.VoucherDto; -import com.wonu606.vouchermanager.service.customer.CustomerService; -import com.wonu606.vouchermanager.service.voucherwallet.VoucherWalletService; +import com.wonu606.vouchermanager.controller.voucher.converter.VoucherCreateResponseConverter; +import com.wonu606.vouchermanager.controller.voucher.converter.VoucherGetOwnedCustomersResponseConverter; +import com.wonu606.vouchermanager.controller.voucher.converter.VoucherGetResponseConverter; +import com.wonu606.vouchermanager.controller.voucher.reqeust.VoucherCreateRequest; +import com.wonu606.vouchermanager.controller.voucher.reqeust.VoucherGetOwnedCustomersRequest; +import com.wonu606.vouchermanager.controller.voucher.reqeust.WalletAssignRequest; +import com.wonu606.vouchermanager.controller.voucher.response.VoucherCreateResponse; +import com.wonu606.vouchermanager.controller.voucher.response.VoucherGetOwnedCustomersResponse; +import com.wonu606.vouchermanager.controller.voucher.response.VoucherGetResponse; import com.wonu606.vouchermanager.service.voucher.VoucherService; -import java.util.List; -import java.util.UUID; -import java.util.stream.Collectors; import org.springframework.stereotype.Component; @Component public class VoucherController { - private final VoucherService voucherService; - private final CustomerService customerService; - private final VoucherWalletService walletService; + private final VoucherService service; - public VoucherController(VoucherService voucherService, CustomerService customerService, - VoucherWalletService walletService) { - this.voucherService = voucherService; - this.customerService = customerService; - this.walletService = walletService; + private final VoucherCreateResponseConverter voucherCreateResponseConverter; + private final VoucherGetResponseConverter voucherGetResponseConverter; + private final VoucherGetOwnedCustomersResponseConverter voucherGetOwnedCustomersResponseConverter; + private final WalletAssignResponseConverter walletAssignResponseConverter; + + public VoucherController(VoucherService service, + VoucherCreateResponseConverter voucherCreateResponseConverter, + VoucherGetResponseConverter voucherGetResponseConverter, + VoucherGetOwnedCustomersResponseConverter voucherGetOwnedCustomersResponseConverter) { + this.service = service; + this.voucherCreateResponseConverter = voucherCreateResponseConverter; + this.voucherGetResponseConverter = voucherGetResponseConverter; + this.voucherGetOwnedCustomersResponseConverter = voucherGetOwnedCustomersResponseConverter; } - public Voucher createVoucher(VoucherDto voucherDto) { - return voucherService.createVoucher(voucherDto); + public VoucherCreateResponse createVoucher(VoucherCreateRequest request) { + VoucherCreateParam param = createVoucherCreateParam(request); + VoucherCreateResult result = service.createVoucher(param); + + return voucherCreateResponseConverter.convert(result); } - public List getVoucherList() { - return voucherService.getVoucherList(); + public VoucherGetResponse getVoucherList() { + VoucherGetResult result = service.getVoucherList(); + + return voucherGetResponseConverter.convert(result); } - public List getCustomersOwnedByVoucherId(String voucherId) { - List customerEmailAddressList = - walletService.findEmailAddressesByVoucherId(UUID.fromString(voucherId)); - return customerService.getCustomerList( - customerEmailAddressList.stream() - .map(Email::new) - .collect(Collectors.toList())); + public VoucherGetOwnedCustomersResponse getOwnedCustomersByVoucher( + VoucherGetOwnedCustomersRequest request) { + VoucherGetOwnedCustomersParam param = createVoucherGetOwnedCustomersParam(request); + VoucherGetOwnedCustomersResult result = service.findOwnedCustomersByVoucher(param); + + return voucherGetOwnedCustomersResponseConverter.convert(result); } - public void assignWallet(VoucherWalletDto walletDto) { - walletService.save(walletDto); + public void assignWallet(WalletAssignRequest request) { + WalletAssignParam param = createWalletAssignParam(request); + WalletAssignResult result = service.assignWallet(param); + } + + private VoucherCreateParam createVoucherCreateParam(VoucherCreateRequest request) { + + } + + private VoucherGetOwnedCustomersParam createVoucherGetOwnedCustomersParam( + VoucherGetOwnedCustomersRequest request) { + + } + + private WalletAssignParam createWalletAssignParam(WalletAssignRequest request) { + } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/VoucherCreateResponseConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/VoucherCreateResponseConverter.java new file mode 100644 index 0000000000..585f65e476 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/VoucherCreateResponseConverter.java @@ -0,0 +1,5 @@ +package com.wonu606.vouchermanager.controller.voucher.converter; + +public class VoucherCreateResponseConverter { + +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/VoucherGetOwnedCustomersResponseConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/VoucherGetOwnedCustomersResponseConverter.java new file mode 100644 index 0000000000..8b35a76009 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/VoucherGetOwnedCustomersResponseConverter.java @@ -0,0 +1,5 @@ +package com.wonu606.vouchermanager.controller.voucher.converter; + +public class VoucherGetOwnedCustomersResponseConverter { + +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/VoucherGetResponseConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/VoucherGetResponseConverter.java new file mode 100644 index 0000000000..5ad7e3e3e2 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/VoucherGetResponseConverter.java @@ -0,0 +1,5 @@ +package com.wonu606.vouchermanager.controller.voucher.converter; + +public class VoucherGetResponseConverter { + +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/reqeust/VoucherCreateRequest.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/reqeust/VoucherCreateRequest.java new file mode 100644 index 0000000000..651ead49bd --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/reqeust/VoucherCreateRequest.java @@ -0,0 +1,20 @@ +package com.wonu606.vouchermanager.controller.voucher.reqeust; + +public class VoucherCreateRequest { + + private final String type; + private final String discountValue; + + public VoucherCreateRequest(String type, String discountValue) { + this.type = type; + this.discountValue = discountValue; + } + + public String getType() { + return type; + } + + public String getDiscountValue() { + return discountValue; + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/reqeust/VoucherGetOwnedCustomersRequest.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/reqeust/VoucherGetOwnedCustomersRequest.java new file mode 100644 index 0000000000..9b10a4a499 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/reqeust/VoucherGetOwnedCustomersRequest.java @@ -0,0 +1,5 @@ +package com.wonu606.vouchermanager.controller.voucher.reqeust; + +public class VoucherGetOwnedCustomersRequest { + +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/reqeust/WalletAssignRequest.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/reqeust/WalletAssignRequest.java new file mode 100644 index 0000000000..487abb3baf --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/reqeust/WalletAssignRequest.java @@ -0,0 +1,22 @@ +package com.wonu606.vouchermanager.controller.voucher.reqeust; + +import java.util.UUID; + +public class WalletAssignRequest { + + private final String voucherId; + private final String email; + + public WalletAssignRequest(UUID voucherId, String email) { + this.voucherId = voucherId; + this.email = email; + } + + public UUID getVoucherId() { + return voucherId; + } + + public String getEmail() { + return email; + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/response/VoucherCreateResponse.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/response/VoucherCreateResponse.java new file mode 100644 index 0000000000..125e6ac4fd --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/response/VoucherCreateResponse.java @@ -0,0 +1,20 @@ +package com.wonu606.vouchermanager.controller.voucher.response; + +public class VoucherCreateResponse { + + private final String type; + private final String discountValue; + + public VoucherCreateResponse(String type, String discountValue) { + this.type = type; + this.discountValue = discountValue; + } + + public String getType() { + return type; + } + + public String getDiscountValue() { + return discountValue; + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/response/VoucherGetOwnedCustomersResponse.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/response/VoucherGetOwnedCustomersResponse.java new file mode 100644 index 0000000000..2e72297c8b --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/response/VoucherGetOwnedCustomersResponse.java @@ -0,0 +1,16 @@ +package com.wonu606.vouchermanager.controller.voucher.response; + +import java.util.List; + +public class VoucherGetOwnedCustomersResponse { + + private final List ownedCustomers; + + public VoucherGetOwnedCustomersResponse(List ownedCustomers) { + this.ownedCustomers = ownedCustomers; + } + + public List getOwnedCustomers() { + return ownedCustomers; + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/response/VoucherGetResponse.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/response/VoucherGetResponse.java new file mode 100644 index 0000000000..afc4ff9051 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/response/VoucherGetResponse.java @@ -0,0 +1,16 @@ +package com.wonu606.vouchermanager.controller.voucher.response; + +import java.util.List; + +public class VoucherGetResponse { + + private final List vouchers; + + public VoucherGetResponse(List vouchers) { + this.vouchers = vouchers; + } + + public List getVouchers() { + return vouchers; + } +} From 54f1e7113b0c61d7b33062db8d581e0d7a42eefa Mon Sep 17 00:00:00 2001 From: wonu606 Date: Tue, 18 Jul 2023 20:23:19 +0900 Subject: [PATCH 05/37] =?UTF-8?q?fix:=20console=EA=B3=BC=20controller=20?= =?UTF-8?q?=EC=82=AC=EC=9D=B4=EC=9D=98=20=EC=98=A4=EB=A5=98=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../customer/CustomerControllerCable.java | 15 +++--- .../customer/io/CustomerConsoleIo.java | 13 +++-- .../voucher/VoucherControllerCable.java | 21 +++++--- .../voucher/io/VoucherConsoleIo.java | 13 +++-- .../customer/CustomerController.java | 53 ++++++++----------- .../CustomerGetResponseConverter.java | 5 ++ ...a => CustomerGetOwnedVouchersRequest.java} | 4 +- .../response/CustomerCreateResponse.java | 1 + .../CustomerGetOwnedVoucherResponse.java | 14 ----- .../CustomerGetOwnedVouchersResponse.java | 16 ++++++ .../response/CustomerGetResponse.java | 17 +++--- .../customer/response/CustomerResponse.java | 1 + .../voucher/reqeust/VoucherCreateRequest.java | 6 +-- .../VoucherGetOwnedCustomersRequest.java | 9 ++++ .../voucher/reqeust/WalletAssignRequest.java | 2 +- .../VoucherGetOwnedCustomersResponse.java | 10 ++-- .../voucher/response/VoucherGetResponse.java | 10 ++-- 17 files changed, 114 insertions(+), 96 deletions(-) create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/CustomerGetResponseConverter.java rename voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/request/{CustomerGetOwnedVoucherRequest.java => CustomerGetOwnedVouchersRequest.java} (66%) delete mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/response/CustomerGetOwnedVoucherResponse.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/response/CustomerGetOwnedVouchersResponse.java diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/customer/CustomerControllerCable.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/customer/CustomerControllerCable.java index 5774de549b..e336676af3 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/customer/CustomerControllerCable.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/customer/CustomerControllerCable.java @@ -3,10 +3,11 @@ import com.wonu606.vouchermanager.console.controllercable.customer.io.CustomerConsoleIo; import com.wonu606.vouchermanager.controller.customer.CustomerController; import com.wonu606.vouchermanager.controller.customer.request.CustomerCreateRequest; -import com.wonu606.vouchermanager.controller.customer.request.CustomerGetOwnedVoucherRequest; +import com.wonu606.vouchermanager.controller.customer.request.CustomerGetOwnedVouchersRequest; import com.wonu606.vouchermanager.controller.customer.request.WalletDeleteRequest; +import com.wonu606.vouchermanager.controller.customer.response.CustomerGetOwnedVouchersResponse; +import com.wonu606.vouchermanager.controller.customer.response.CustomerGetResponse; import com.wonu606.vouchermanager.controller.customer.response.CustomerResponse; -import com.wonu606.vouchermanager.controller.customer.response.CustomerGetOwnedVoucherResponse; import java.util.List; import org.springframework.stereotype.Component; @@ -44,15 +45,15 @@ private void executeMenuAction(CustomerControllerMenu menu) { return; case LIST: - List CustomerResponses = controller.getCustomerList(); - consoleIo.displayCustomerList(CustomerResponses); + CustomerGetResponse customerGetResponse = controller.getCustomerList(); + consoleIo.displayCustomerList(customerGetResponse); return; case VOUCHER_LIST: String searchedCustomerId = consoleIo.readString("CustomerId"); - List VoucherResponses = controller.getOwnedVouchersByCustomer( - new CustomerGetOwnedVoucherRequest(searchedCustomerId)); - consoleIo.displayVoucherList(consoleVoucherResponses); + CustomerGetOwnedVouchersResponse customerGetOwnedVouchersResponse = controller.getOwnedVouchersByCustomer( + new CustomerGetOwnedVouchersRequest(searchedCustomerId)); + consoleIo.displayVoucherList(customerGetOwnedVouchersResponse); return; case DELETE: diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/customer/io/CustomerConsoleIo.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/customer/io/CustomerConsoleIo.java index d9f7b1bb9c..84f602575b 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/customer/io/CustomerConsoleIo.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/customer/io/CustomerConsoleIo.java @@ -4,7 +4,8 @@ import com.wonu606.vouchermanager.console.ConsoleInput; import com.wonu606.vouchermanager.console.ConsolePrinter; import com.wonu606.vouchermanager.console.controllercable.customer.CustomerControllerMenu; -import com.wonu606.vouchermanager.controller.customer.response.CustomerResponse; +import com.wonu606.vouchermanager.controller.customer.response.CustomerGetOwnedVouchersResponse; +import com.wonu606.vouchermanager.controller.customer.response.CustomerGetResponse; import java.util.List; import org.springframework.stereotype.Component; @@ -28,13 +29,15 @@ protected void displayMenu() { printer.displayMessage(String.format(lineFormat, n, n))); } - public void displayCustomerList(List customerResponses) { + public void displayCustomerList(CustomerGetResponse response) { printer.displayMessage("=== 보유한 Customer 리스트 ==="); - customerResponses.forEach(response -> printer.displayMessage(response.toString())); + List emails = response.getEmails(); + emails.forEach(printer::displayMessage); } - public void displayVoucherList(List VoucherResponses) { + public void displayVoucherList(CustomerGetOwnedVouchersResponse response) { printer.displayMessage("=== 보유한 바우처 리스트 ==="); - VoucherResponses.forEach(response -> printer.displayMessage(response.toString())); + List voucherIds = response.getVoucherIds(); + voucherIds.forEach(printer::displayMessage); } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/voucher/VoucherControllerCable.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/voucher/VoucherControllerCable.java index 9504b18efe..243ac0a6ea 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/voucher/VoucherControllerCable.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/voucher/VoucherControllerCable.java @@ -2,7 +2,11 @@ import com.wonu606.vouchermanager.console.controllercable.voucher.io.VoucherConsoleIo; import com.wonu606.vouchermanager.controller.voucher.VoucherController; -import java.util.List; +import com.wonu606.vouchermanager.controller.voucher.reqeust.VoucherCreateRequest; +import com.wonu606.vouchermanager.controller.voucher.reqeust.VoucherGetOwnedCustomersRequest; +import com.wonu606.vouchermanager.controller.voucher.reqeust.WalletAssignRequest; +import com.wonu606.vouchermanager.controller.voucher.response.VoucherGetOwnedCustomersResponse; +import com.wonu606.vouchermanager.controller.voucher.response.VoucherGetResponse; import org.springframework.stereotype.Component; @Component @@ -35,8 +39,8 @@ private void executeMenuAction(VoucherControllerMenu menu) { return; case LIST: - List voucherResponses = controller.getVoucherList(); - consoleIo.displayVoucherList(voucherResponses); + VoucherGetResponse voucherGetResponse = controller.getVoucherList(); + consoleIo.displayVoucherList(voucherGetResponse); return; case CREATE: @@ -44,14 +48,15 @@ private void executeMenuAction(VoucherControllerMenu menu) { controller.createVoucher(voucherCreateRequest); return; case ASSIGN: - VoucherWalletCreateRequest voucherWalletCreateRequest = createVoucherWalletCreateRequest(); + WalletAssignRequest voucherWalletCreateRequest = createVoucherWalletCreateRequest(); controller.assignWallet(voucherWalletCreateRequest); return; case CUSTOMER_LIST: String voucherId = consoleIo.readString("VoucherId"); - List customerResponses = controller.getCustomersOwnedByVoucherId(voucherId); - consoleIo.displayCustomerList(customerResponses); + VoucherGetOwnedCustomersResponse voucherGetOwnedCustomersResponse = controller.getOwnedCustomersByVoucher( + new VoucherGetOwnedCustomersRequest(voucherId)); + consoleIo.displayCustomerList(voucherGetOwnedCustomersResponse); return; default: @@ -59,10 +64,10 @@ private void executeMenuAction(VoucherControllerMenu menu) { } } - private VoucherWalletCreateRequest createVoucherWalletCreateRequest() { + private WalletAssignRequest createVoucherWalletCreateRequest() { String uuid = consoleIo.readString("Voucher UUID"); String emailAddress = consoleIo.readString("Customer EmailAddress"); - return new VoucherWalletCreateRequest(uuid, emailAddress); + return new WalletAssignRequest(uuid, emailAddress); } private VoucherCreateRequest createVoucherCreateRequest() { diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/voucher/io/VoucherConsoleIo.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/voucher/io/VoucherConsoleIo.java index a0e1029f58..b2ae831dd9 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/voucher/io/VoucherConsoleIo.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/voucher/io/VoucherConsoleIo.java @@ -4,6 +4,9 @@ import com.wonu606.vouchermanager.console.ConsoleInput; import com.wonu606.vouchermanager.console.ConsolePrinter; import com.wonu606.vouchermanager.console.controllercable.voucher.VoucherControllerMenu; +import com.wonu606.vouchermanager.controller.customer.response.CustomerResponse; +import com.wonu606.vouchermanager.controller.voucher.response.VoucherGetOwnedCustomersResponse; +import com.wonu606.vouchermanager.controller.voucher.response.VoucherGetResponse; import java.util.List; import org.springframework.stereotype.Component; @@ -26,14 +29,16 @@ public String selectVoucherType() { return input.readString(VoucherConsoleType.getAllNames(), "Type"); } - public void displayVoucherList(List voucherList) { + public void displayVoucherList(VoucherGetResponse voucherList) { printer.displayMessage("=== 바우처 리스트 ==="); - voucherList.forEach(response -> printer.displayMessage(response.toString())); + List voucherIds = voucherList.getVoucherIds(); + voucherIds.forEach(printer::displayMessage); } - public void displayCustomerList(List customerList) { + public void displayCustomerList(VoucherGetOwnedCustomersResponse response) { printer.displayMessage("=== 보유한 Customer 리스트 ==="); - customerList.forEach(response -> printer.displayMessage(response.toString())); + List emails = response.getEmails(); + emails.forEach(printer::displayMessage); } protected void displayMenu() { diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/CustomerController.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/CustomerController.java index f010770048..44f4c0d187 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/CustomerController.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/CustomerController.java @@ -2,21 +2,14 @@ import com.wonu606.vouchermanager.controller.customer.converter.CustomerCreateResponseConverter; import com.wonu606.vouchermanager.controller.customer.converter.CustomerGetOwnedVoucherResponseConverter; +import com.wonu606.vouchermanager.controller.customer.converter.CustomerGetResponseConverter; import com.wonu606.vouchermanager.controller.customer.request.CustomerCreateRequest; -import com.wonu606.vouchermanager.controller.customer.request.CustomerGetOwnedVoucherRequest; +import com.wonu606.vouchermanager.controller.customer.request.CustomerGetOwnedVouchersRequest; import com.wonu606.vouchermanager.controller.customer.request.WalletDeleteRequest; import com.wonu606.vouchermanager.controller.customer.response.CustomerCreateResponse; -import com.wonu606.vouchermanager.controller.customer.response.CustomerGetOwnedVoucherResponse; +import com.wonu606.vouchermanager.controller.customer.response.CustomerGetOwnedVouchersResponse; import com.wonu606.vouchermanager.controller.customer.response.CustomerGetResponse; -import com.wonu606.vouchermanager.domain.customer.Customer; -import com.wonu606.vouchermanager.domain.voucher.Voucher; -import com.wonu606.vouchermanager.domain.voucherwallet.VoucherWalletDto; import com.wonu606.vouchermanager.service.customer.CustomerService; -import com.wonu606.vouchermanager.service.voucher.VoucherService; -import com.wonu606.vouchermanager.service.voucherwallet.VoucherWalletService; -import java.util.List; -import java.util.UUID; -import java.util.stream.Collectors; import org.springframework.stereotype.Component; @Component @@ -26,39 +19,37 @@ public class CustomerController { private final CustomerCreateResponseConverter customerCreateResponseConverter; private final CustomerGetResponseConverter customerGetResponseConverter; - private final CustomerGetOwnedVoucherResponseConverter customerGetOwnedVoucherResponseConverter; + private final CustomerGetOwnedVoucherResponseConverter customerGetOwnedVouchersResponseConverter; - public CustomerController(CustomerService service, VoucherService voucherService, - VoucherWalletService walletService) { + public CustomerController(CustomerService service, + CustomerCreateResponseConverter customerCreateResponseConverter, + CustomerGetResponseConverter customerGetResponseConverter, + CustomerGetOwnedVoucherResponseConverter customerGetOwnedVouchersResponseConverter) { this.service = service; - this.voucherService = voucherService; - this.walletService = walletService; + this.customerCreateResponseConverter = customerCreateResponseConverter; + this.customerGetResponseConverter = customerGetResponseConverter; + this.customerGetOwnedVouchersResponseConverter = customerGetOwnedVouchersResponseConverter; } - public Customer createCustomer(CustomerCreateRequest request) { + public CustomerCreateResponse createCustomer(CustomerCreateRequest request) { CustomerCreateParam param = createCustomerCreateParam(request); CustomerCreateResult result = service.createCustomer(param); - CustomerCreateResponse response = customerCreateResponseConverter.convert(result); - return service.saveCustomer(response); + return customerCreateResponseConverter.convert(result); } - public List getCustomerList() { - List results = service.getCustomerList(); - List responses = results.stream() - .map(customerGetResponseConverter::convert) - .collect(Collectors.toList()); - return responses; + public CustomerGetResponse getCustomerList() { + CustomerGetResult result = service.getCustomerList(); + + return customerGetResponseConverter.convert(result); } - public List getOwnedVouchersByCustomer(CustomerGetOwnedVoucherRequest request) { + public CustomerGetOwnedVouchersResponse getOwnedVouchersByCustomer( + CustomerGetOwnedVouchersRequest request) { CustomerGetOwnedVoucherParam param = createCustomerGetOwnedVoucherParam(request); - List results = service.findOwnedVoucherByCustomer(param); + CustomerGetOwnedVoucherResult result = service.findOwnedVouchersByCustomer(param); - List responses = results.stream() - .map(customerGetOwnedVoucherResponseConverter::convert) - .collect(Collectors.toList()); - return responses; + return customerGetOwnedVouchersResponseConverter.convert(result); } public void deleteWallet(WalletDeleteRequest request) { @@ -71,7 +62,7 @@ private CustomerCreateParam createCustomerCreateParam(CustomerCreateRequest requ } private CustomerGetOwnedVoucherParam createCustomerGetOwnedVoucherParam( - CustomerGetOwnedVoucherRequest request) { + CustomerGetOwnedVouchersRequest request) { } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/CustomerGetResponseConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/CustomerGetResponseConverter.java new file mode 100644 index 0000000000..976647b231 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/CustomerGetResponseConverter.java @@ -0,0 +1,5 @@ +package com.wonu606.vouchermanager.controller.customer.converter; + +public class CustomerGetResponseConverter { + +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/request/CustomerGetOwnedVoucherRequest.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/request/CustomerGetOwnedVouchersRequest.java similarity index 66% rename from voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/request/CustomerGetOwnedVoucherRequest.java rename to voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/request/CustomerGetOwnedVouchersRequest.java index b8fb2f7233..91ab786d80 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/request/CustomerGetOwnedVoucherRequest.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/request/CustomerGetOwnedVouchersRequest.java @@ -1,10 +1,10 @@ package com.wonu606.vouchermanager.controller.customer.request; -public class CustomerGetOwnedVoucherRequest { +public class CustomerGetOwnedVouchersRequest { private final String customerId; - public CustomerGetOwnedVoucherRequest(String customerId) { + public CustomerGetOwnedVouchersRequest(String customerId) { this.customerId = customerId; } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/response/CustomerCreateResponse.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/response/CustomerCreateResponse.java index 5b28a28505..5a7fbfb6d5 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/response/CustomerCreateResponse.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/response/CustomerCreateResponse.java @@ -1,6 +1,7 @@ package com.wonu606.vouchermanager.controller.customer.response; public class CustomerCreateResponse { + private final String email; private final String nickname; diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/response/CustomerGetOwnedVoucherResponse.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/response/CustomerGetOwnedVoucherResponse.java deleted file mode 100644 index 5e8ff3cad2..0000000000 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/response/CustomerGetOwnedVoucherResponse.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.wonu606.vouchermanager.controller.customer.response; - -public class CustomerGetOwnedVoucherResponse { - private final String voucherId; - - public CustomerGetOwnedVoucherResponse(String classSimpleName, String voucherId, - String discountValueType, String discountValue) { - this.voucherId = voucherId; - } - - public String getVoucherId() { - return voucherId; - } -} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/response/CustomerGetOwnedVouchersResponse.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/response/CustomerGetOwnedVouchersResponse.java new file mode 100644 index 0000000000..34c33fe7f2 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/response/CustomerGetOwnedVouchersResponse.java @@ -0,0 +1,16 @@ +package com.wonu606.vouchermanager.controller.customer.response; + +import java.util.List; + +public class CustomerGetOwnedVouchersResponse { + + private final List voucherIds; + + public CustomerGetOwnedVouchersResponse(List voucherId) { + this.voucherIds = voucherId; + } + + public List getVoucherIds() { + return voucherIds; + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/response/CustomerGetResponse.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/response/CustomerGetResponse.java index a2fa79fa53..94fad64fcd 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/response/CustomerGetResponse.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/response/CustomerGetResponse.java @@ -1,21 +1,16 @@ package com.wonu606.vouchermanager.controller.customer.response; -import com.wonu606.vouchermanager.domain.customer.email.Email; +import java.util.List; public class CustomerGetResponse { - private final Email email; - private final String nickname; - public CustomerGetResponse(Email email, String nickname) { - this.email = email; - this.nickname = nickname; - } + private final List emails; - public String getEmailAddress() { - return email.getAddress(); + public CustomerGetResponse(List emails) { + this.emails = emails; } - public String getNickname() { - return nickname; + public List getEmails() { + return emails; } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/response/CustomerResponse.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/response/CustomerResponse.java index 0f88666fc9..2804b55118 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/response/CustomerResponse.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/response/CustomerResponse.java @@ -3,6 +3,7 @@ import com.wonu606.vouchermanager.domain.customer.email.Email; public class CustomerResponse { + private final Email email; private final String nickname; diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/reqeust/VoucherCreateRequest.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/reqeust/VoucherCreateRequest.java index 651ead49bd..7a92e839be 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/reqeust/VoucherCreateRequest.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/reqeust/VoucherCreateRequest.java @@ -3,9 +3,9 @@ public class VoucherCreateRequest { private final String type; - private final String discountValue; + private final double discountValue; - public VoucherCreateRequest(String type, String discountValue) { + public VoucherCreateRequest(String type, double discountValue) { this.type = type; this.discountValue = discountValue; } @@ -14,7 +14,7 @@ public String getType() { return type; } - public String getDiscountValue() { + public double getDiscountValue() { return discountValue; } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/reqeust/VoucherGetOwnedCustomersRequest.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/reqeust/VoucherGetOwnedCustomersRequest.java index 9b10a4a499..40a968cfb5 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/reqeust/VoucherGetOwnedCustomersRequest.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/reqeust/VoucherGetOwnedCustomersRequest.java @@ -2,4 +2,13 @@ public class VoucherGetOwnedCustomersRequest { + private final String voucherId; + + public VoucherGetOwnedCustomersRequest(String voucherId) { + this.voucherId = voucherId; + } + + public String getVoucherId() { + return voucherId; + } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/reqeust/WalletAssignRequest.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/reqeust/WalletAssignRequest.java index 487abb3baf..39b4c44a15 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/reqeust/WalletAssignRequest.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/reqeust/WalletAssignRequest.java @@ -7,7 +7,7 @@ public class WalletAssignRequest { private final String voucherId; private final String email; - public WalletAssignRequest(UUID voucherId, String email) { + public WalletAssignRequest(String voucherId, String email) { this.voucherId = voucherId; this.email = email; } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/response/VoucherGetOwnedCustomersResponse.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/response/VoucherGetOwnedCustomersResponse.java index 2e72297c8b..e51de863f7 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/response/VoucherGetOwnedCustomersResponse.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/response/VoucherGetOwnedCustomersResponse.java @@ -4,13 +4,13 @@ public class VoucherGetOwnedCustomersResponse { - private final List ownedCustomers; + private final List emails; - public VoucherGetOwnedCustomersResponse(List ownedCustomers) { - this.ownedCustomers = ownedCustomers; + public VoucherGetOwnedCustomersResponse(List emails) { + this.emails = emails; } - public List getOwnedCustomers() { - return ownedCustomers; + public List getEmails() { + return emails; } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/response/VoucherGetResponse.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/response/VoucherGetResponse.java index afc4ff9051..8fcbe11d49 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/response/VoucherGetResponse.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/response/VoucherGetResponse.java @@ -4,13 +4,13 @@ public class VoucherGetResponse { - private final List vouchers; + private final List voucherIds; - public VoucherGetResponse(List vouchers) { - this.vouchers = vouchers; + public VoucherGetResponse(List voucherIds) { + this.voucherIds = voucherIds; } - public List getVouchers() { - return vouchers; + public List getVoucherIds() { + return voucherIds; } } From 531bfed79c26d33747cdc609bdfb6473774e424e Mon Sep 17 00:00:00 2001 From: wonu606 Date: Wed, 19 Jul 2023 00:03:58 +0900 Subject: [PATCH 06/37] =?UTF-8?q?refactor:=20CustomerService=20=EC=9D=98?= =?UTF-8?q?=EC=A1=B4=EC=84=B1=20=EC=A0=9C=EA=B1=B0=20=EB=B0=8F=20DTO=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../customer/CustomerControllerCable.java | 18 +-- .../customer/io/CustomerConsoleIo.java | 8 +- .../customer/CustomerController.java | 72 ++++----- .../CustomerCreateParamConverter.java | 11 ++ ...ava => CustomerListResponseConverter.java} | 2 +- .../converter/OwnedVoucherParamConverter.java | 11 ++ .../OwnedVoucherResponseConverter.java | 5 + ...r.java => WalletDeleteParamConverter.java} | 2 +- ...Request.java => OwnedVouchersRequest.java} | 4 +- ...onse.java => CustomerListGetResponse.java} | 4 +- ...sponse.java => OwnedVouchersResponse.java} | 4 +- .../controller/voucher/VoucherController.java | 6 +- .../domain/customer/CustomerDto.java | 20 --- .../LocalMemoryVoucherVoucherRepository.java | 50 ------ .../repository/voucher/VoucherRepository.java | 11 +- .../service/customer/CustomerService.java | 53 ++++--- .../customer/creator/CustomerCreator.java | 12 ++ .../customer/param/CustomerCreateParam.java | 20 +++ .../customer/param/OwnedVoucherParam.java | 16 ++ .../customer/param/WalletDeleteParam.java | 21 +++ .../customer/result/CustomerCreateResult.java | 5 + .../voucherwallet/VoucherWalletService.java | 2 +- ...calMemoryVoucherVoucherRepositoryTest.java | 149 ------------------ .../service/voucher/VoucherServiceTest.java | 1 - 24 files changed, 192 insertions(+), 315 deletions(-) create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/CustomerCreateParamConverter.java rename voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/{CustomerGetOwnedVoucherResponseConverter.java => CustomerListResponseConverter.java} (55%) create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/OwnedVoucherParamConverter.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/OwnedVoucherResponseConverter.java rename voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/{CustomerGetResponseConverter.java => WalletDeleteParamConverter.java} (61%) rename voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/request/{CustomerGetOwnedVouchersRequest.java => OwnedVouchersRequest.java} (66%) rename voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/response/{CustomerGetResponse.java => CustomerListGetResponse.java} (70%) rename voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/response/{CustomerGetOwnedVouchersResponse.java => OwnedVouchersResponse.java} (68%) delete mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/customer/CustomerDto.java delete mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/LocalMemoryVoucherVoucherRepository.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/creator/CustomerCreator.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/param/CustomerCreateParam.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/param/OwnedVoucherParam.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/param/WalletDeleteParam.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/result/CustomerCreateResult.java delete mode 100644 voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucher/LocalMemoryVoucherVoucherRepositoryTest.java diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/customer/CustomerControllerCable.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/customer/CustomerControllerCable.java index e336676af3..6387c17f6d 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/customer/CustomerControllerCable.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/customer/CustomerControllerCable.java @@ -3,12 +3,10 @@ import com.wonu606.vouchermanager.console.controllercable.customer.io.CustomerConsoleIo; import com.wonu606.vouchermanager.controller.customer.CustomerController; import com.wonu606.vouchermanager.controller.customer.request.CustomerCreateRequest; -import com.wonu606.vouchermanager.controller.customer.request.CustomerGetOwnedVouchersRequest; +import com.wonu606.vouchermanager.controller.customer.request.OwnedVouchersRequest; import com.wonu606.vouchermanager.controller.customer.request.WalletDeleteRequest; -import com.wonu606.vouchermanager.controller.customer.response.CustomerGetOwnedVouchersResponse; -import com.wonu606.vouchermanager.controller.customer.response.CustomerGetResponse; -import com.wonu606.vouchermanager.controller.customer.response.CustomerResponse; -import java.util.List; +import com.wonu606.vouchermanager.controller.customer.response.OwnedVouchersResponse; +import com.wonu606.vouchermanager.controller.customer.response.CustomerListGetResponse; import org.springframework.stereotype.Component; @Component @@ -45,15 +43,15 @@ private void executeMenuAction(CustomerControllerMenu menu) { return; case LIST: - CustomerGetResponse customerGetResponse = controller.getCustomerList(); - consoleIo.displayCustomerList(customerGetResponse); + CustomerListGetResponse customerListGetResponse = controller.getCustomerList(); + consoleIo.displayCustomerList(customerListGetResponse); return; case VOUCHER_LIST: String searchedCustomerId = consoleIo.readString("CustomerId"); - CustomerGetOwnedVouchersResponse customerGetOwnedVouchersResponse = controller.getOwnedVouchersByCustomer( - new CustomerGetOwnedVouchersRequest(searchedCustomerId)); - consoleIo.displayVoucherList(customerGetOwnedVouchersResponse); + OwnedVouchersResponse ownedVouchersResponse = controller.getOwnedVouchersByCustomer( + new OwnedVouchersRequest(searchedCustomerId)); + consoleIo.displayVoucherList(ownedVouchersResponse); return; case DELETE: diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/customer/io/CustomerConsoleIo.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/customer/io/CustomerConsoleIo.java index 84f602575b..1e669265ba 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/customer/io/CustomerConsoleIo.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/customer/io/CustomerConsoleIo.java @@ -4,8 +4,8 @@ import com.wonu606.vouchermanager.console.ConsoleInput; import com.wonu606.vouchermanager.console.ConsolePrinter; import com.wonu606.vouchermanager.console.controllercable.customer.CustomerControllerMenu; -import com.wonu606.vouchermanager.controller.customer.response.CustomerGetOwnedVouchersResponse; -import com.wonu606.vouchermanager.controller.customer.response.CustomerGetResponse; +import com.wonu606.vouchermanager.controller.customer.response.OwnedVouchersResponse; +import com.wonu606.vouchermanager.controller.customer.response.CustomerListGetResponse; import java.util.List; import org.springframework.stereotype.Component; @@ -29,13 +29,13 @@ protected void displayMenu() { printer.displayMessage(String.format(lineFormat, n, n))); } - public void displayCustomerList(CustomerGetResponse response) { + public void displayCustomerList(CustomerListGetResponse response) { printer.displayMessage("=== 보유한 Customer 리스트 ==="); List emails = response.getEmails(); emails.forEach(printer::displayMessage); } - public void displayVoucherList(CustomerGetOwnedVouchersResponse response) { + public void displayVoucherList(OwnedVouchersResponse response) { printer.displayMessage("=== 보유한 바우처 리스트 ==="); List voucherIds = response.getVoucherIds(); voucherIds.forEach(printer::displayMessage); diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/CustomerController.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/CustomerController.java index 44f4c0d187..f25dfd2514 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/CustomerController.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/CustomerController.java @@ -1,15 +1,22 @@ package com.wonu606.vouchermanager.controller.customer; +import com.wonu606.vouchermanager.controller.customer.converter.CustomerCreateParamConverter; import com.wonu606.vouchermanager.controller.customer.converter.CustomerCreateResponseConverter; -import com.wonu606.vouchermanager.controller.customer.converter.CustomerGetOwnedVoucherResponseConverter; -import com.wonu606.vouchermanager.controller.customer.converter.CustomerGetResponseConverter; +import com.wonu606.vouchermanager.controller.customer.converter.CustomerListResponseConverter; +import com.wonu606.vouchermanager.controller.customer.converter.OwnedVoucherParamConverter; +import com.wonu606.vouchermanager.controller.customer.converter.OwnedVoucherResponseConverter; +import com.wonu606.vouchermanager.controller.customer.converter.WalletDeleteParamConverter; import com.wonu606.vouchermanager.controller.customer.request.CustomerCreateRequest; -import com.wonu606.vouchermanager.controller.customer.request.CustomerGetOwnedVouchersRequest; +import com.wonu606.vouchermanager.controller.customer.request.OwnedVouchersRequest; import com.wonu606.vouchermanager.controller.customer.request.WalletDeleteRequest; import com.wonu606.vouchermanager.controller.customer.response.CustomerCreateResponse; -import com.wonu606.vouchermanager.controller.customer.response.CustomerGetOwnedVouchersResponse; -import com.wonu606.vouchermanager.controller.customer.response.CustomerGetResponse; +import com.wonu606.vouchermanager.controller.customer.response.CustomerListGetResponse; +import com.wonu606.vouchermanager.controller.customer.response.OwnedVouchersResponse; import com.wonu606.vouchermanager.service.customer.CustomerService; +import com.wonu606.vouchermanager.service.customer.param.CustomerCreateParam; +import com.wonu606.vouchermanager.service.customer.param.OwnedVoucherParam; +import com.wonu606.vouchermanager.service.customer.param.WalletDeleteParam; +import com.wonu606.vouchermanager.service.customer.result.CustomerCreateResult; import org.springframework.stereotype.Component; @Component @@ -17,56 +24,47 @@ public class CustomerController { private final CustomerService service; + private final CustomerCreateParamConverter customerCreateParamConverter; + private final OwnedVoucherParamConverter ownedVoucherParamConverter; + private final WalletDeleteParamConverter walletDeleteParamConverter; + private final CustomerCreateResponseConverter customerCreateResponseConverter; - private final CustomerGetResponseConverter customerGetResponseConverter; - private final CustomerGetOwnedVoucherResponseConverter customerGetOwnedVouchersResponseConverter; + private final CustomerListResponseConverter customerListResponseConverter; + private final OwnedVoucherResponseConverter ownedVouchersResponseConverter; - public CustomerController(CustomerService service, - CustomerCreateResponseConverter customerCreateResponseConverter, - CustomerGetResponseConverter customerGetResponseConverter, - CustomerGetOwnedVoucherResponseConverter customerGetOwnedVouchersResponseConverter) { + public CustomerController(CustomerService service) { this.service = service; - this.customerCreateResponseConverter = customerCreateResponseConverter; - this.customerGetResponseConverter = customerGetResponseConverter; - this.customerGetOwnedVouchersResponseConverter = customerGetOwnedVouchersResponseConverter; + + this.customerCreateParamConverter = new CustomerCreateParamConverter(); + this.ownedVoucherParamConverter = new OwnedVoucherParamConverter(); + this.walletDeleteParamConverter = new WalletDeleteParamConverter(); + this.customerCreateResponseConverter = new CustomerCreateResponseConverter(); + this.customerListResponseConverter = new CustomerListResponseConverter(); + this.ownedVouchersResponseConverter = new OwnedVoucherResponseConverter(); } public CustomerCreateResponse createCustomer(CustomerCreateRequest request) { - CustomerCreateParam param = createCustomerCreateParam(request); + CustomerCreateParam param = customerCreateParamConverter.convert(request); CustomerCreateResult result = service.createCustomer(param); return customerCreateResponseConverter.convert(result); } - public CustomerGetResponse getCustomerList() { - CustomerGetResult result = service.getCustomerList(); + public CustomerListGetResponse getCustomerList() { + CustomerListResult result = service.getCustomerList(); - return customerGetResponseConverter.convert(result); + return customerListResponseConverter.convert(result); } - public CustomerGetOwnedVouchersResponse getOwnedVouchersByCustomer( - CustomerGetOwnedVouchersRequest request) { - CustomerGetOwnedVoucherParam param = createCustomerGetOwnedVoucherParam(request); - CustomerGetOwnedVoucherResult result = service.findOwnedVouchersByCustomer(param); + public OwnedVouchersResponse getOwnedVouchersByCustomer(OwnedVouchersRequest request) { + OwnedVoucherParam param = ownedVoucherParamConverter.convert(request); + OwnedVoucherResult result = service.findOwnedVouchersByCustomer(param); - return customerGetOwnedVouchersResponseConverter.convert(result); + return ownedVouchersResponseConverter.convert(result); } public void deleteWallet(WalletDeleteRequest request) { - WalletDeleteParam param = createWalletDeleteParam(request); + WalletDeleteParam param = walletDeleteParamConverter.convert(request); service.deleteWallet(param); } - - private CustomerCreateParam createCustomerCreateParam(CustomerCreateRequest request) { - - } - - private CustomerGetOwnedVoucherParam createCustomerGetOwnedVoucherParam( - CustomerGetOwnedVouchersRequest request) { - - } - - private WalletDeleteParam createWalletDeleteParam(WalletDeleteRequest request) { - - } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/CustomerCreateParamConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/CustomerCreateParamConverter.java new file mode 100644 index 0000000000..51db3074be --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/CustomerCreateParamConverter.java @@ -0,0 +1,11 @@ +package com.wonu606.vouchermanager.controller.customer.converter; + +import com.wonu606.vouchermanager.controller.customer.request.CustomerCreateRequest; +import com.wonu606.vouchermanager.service.customer.param.CustomerCreateParam; + +public class CustomerCreateParamConverter { + + public CustomerCreateParam convert(CustomerCreateRequest request) { + return new CustomerCreateParam(request.getEmail(), request.getNickname()); + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/CustomerGetOwnedVoucherResponseConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/CustomerListResponseConverter.java similarity index 55% rename from voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/CustomerGetOwnedVoucherResponseConverter.java rename to voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/CustomerListResponseConverter.java index c193e20285..50df26ddea 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/CustomerGetOwnedVoucherResponseConverter.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/CustomerListResponseConverter.java @@ -1,5 +1,5 @@ package com.wonu606.vouchermanager.controller.customer.converter; -public class CustomerGetOwnedVoucherResponseConverter { +public class CustomerListResponseConverter { } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/OwnedVoucherParamConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/OwnedVoucherParamConverter.java new file mode 100644 index 0000000000..f63cb49572 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/OwnedVoucherParamConverter.java @@ -0,0 +1,11 @@ +package com.wonu606.vouchermanager.controller.customer.converter; + +import com.wonu606.vouchermanager.controller.customer.request.OwnedVouchersRequest; +import com.wonu606.vouchermanager.service.customer.param.OwnedVoucherParam; + +public class OwnedVoucherParamConverter { + + public OwnedVoucherParam convert(OwnedVouchersRequest request) { + return new OwnedVoucherParam(request.getCustomerId()); + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/OwnedVoucherResponseConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/OwnedVoucherResponseConverter.java new file mode 100644 index 0000000000..94e0ee4b0c --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/OwnedVoucherResponseConverter.java @@ -0,0 +1,5 @@ +package com.wonu606.vouchermanager.controller.customer.converter; + +public class OwnedVoucherResponseConverter { + +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/CustomerGetResponseConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/WalletDeleteParamConverter.java similarity index 61% rename from voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/CustomerGetResponseConverter.java rename to voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/WalletDeleteParamConverter.java index 976647b231..6b254a280a 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/CustomerGetResponseConverter.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/WalletDeleteParamConverter.java @@ -1,5 +1,5 @@ package com.wonu606.vouchermanager.controller.customer.converter; -public class CustomerGetResponseConverter { +public class WalletDeleteParamConverter { } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/request/CustomerGetOwnedVouchersRequest.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/request/OwnedVouchersRequest.java similarity index 66% rename from voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/request/CustomerGetOwnedVouchersRequest.java rename to voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/request/OwnedVouchersRequest.java index 91ab786d80..59ab9c3a78 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/request/CustomerGetOwnedVouchersRequest.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/request/OwnedVouchersRequest.java @@ -1,10 +1,10 @@ package com.wonu606.vouchermanager.controller.customer.request; -public class CustomerGetOwnedVouchersRequest { +public class OwnedVouchersRequest { private final String customerId; - public CustomerGetOwnedVouchersRequest(String customerId) { + public OwnedVouchersRequest(String customerId) { this.customerId = customerId; } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/response/CustomerGetResponse.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/response/CustomerListGetResponse.java similarity index 70% rename from voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/response/CustomerGetResponse.java rename to voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/response/CustomerListGetResponse.java index 94fad64fcd..4303861fa7 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/response/CustomerGetResponse.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/response/CustomerListGetResponse.java @@ -2,11 +2,11 @@ import java.util.List; -public class CustomerGetResponse { +public class CustomerListGetResponse { private final List emails; - public CustomerGetResponse(List emails) { + public CustomerListGetResponse(List emails) { this.emails = emails; } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/response/CustomerGetOwnedVouchersResponse.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/response/OwnedVouchersResponse.java similarity index 68% rename from voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/response/CustomerGetOwnedVouchersResponse.java rename to voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/response/OwnedVouchersResponse.java index 34c33fe7f2..30e4e5c0fc 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/response/CustomerGetOwnedVouchersResponse.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/response/OwnedVouchersResponse.java @@ -2,11 +2,11 @@ import java.util.List; -public class CustomerGetOwnedVouchersResponse { +public class OwnedVouchersResponse { private final List voucherIds; - public CustomerGetOwnedVouchersResponse(List voucherId) { + public OwnedVouchersResponse(List voucherId) { this.voucherIds = voucherId; } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/VoucherController.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/VoucherController.java index 83d832b3b9..f5f8b03906 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/VoucherController.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/VoucherController.java @@ -17,10 +17,10 @@ public class VoucherController { private final VoucherService service; + private final VoucherCreateResponseConverter voucherCreateResponseConverter; private final VoucherGetResponseConverter voucherGetResponseConverter; private final VoucherGetOwnedCustomersResponseConverter voucherGetOwnedCustomersResponseConverter; - private final WalletAssignResponseConverter walletAssignResponseConverter; public VoucherController(VoucherService service, VoucherCreateResponseConverter voucherCreateResponseConverter, @@ -66,8 +66,4 @@ private VoucherGetOwnedCustomersParam createVoucherGetOwnedCustomersParam( VoucherGetOwnedCustomersRequest request) { } - - private WalletAssignParam createWalletAssignParam(WalletAssignRequest request) { - - } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/customer/CustomerDto.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/customer/CustomerDto.java deleted file mode 100644 index 2cf49c8232..0000000000 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/customer/CustomerDto.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.wonu606.vouchermanager.domain.customer; - -public class CustomerDto { - - private final String emailAddress; - private final String nickname; - - public CustomerDto(String emailAddress, String nickname) { - this.emailAddress = emailAddress; - this.nickname = nickname; - } - - public String getEmailAddress() { - return emailAddress; - } - - public String getNickname() { - return nickname; - } -} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/LocalMemoryVoucherVoucherRepository.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/LocalMemoryVoucherVoucherRepository.java deleted file mode 100644 index 1fda500a66..0000000000 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/LocalMemoryVoucherVoucherRepository.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.wonu606.vouchermanager.repository.voucher; - -import com.wonu606.vouchermanager.domain.voucher.Voucher; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Optional; -import java.util.UUID; -import java.util.concurrent.ConcurrentHashMap; -import org.springframework.dao.DuplicateKeyException; - -public class LocalMemoryVoucherVoucherRepository implements VoucherRepository { - - private final Map voucherStore = new ConcurrentHashMap<>(); - - @Override - public Voucher save(Voucher voucher) { - if (voucherStore.containsKey(voucher.getUuid())) { - throw new DuplicateKeyException("이미 존재하는 바우처의 uuid입니다. [uuid]: " + voucher.getUuid()); - } - - voucherStore.put(voucher.getUuid(), voucher); - return voucher; - } - - @Override - public Optional findById(UUID uuid) { - return Optional.ofNullable(voucherStore.get(uuid)); - } - - @Override - public List findAll() { - return new ArrayList<>(voucherStore.values()); - } - - @Override - public List findAllByUuIds(List uuidList) { - throw new UnsupportedOperationException(); - } - - @Override - public void deleteById(UUID uuid) { - voucherStore.remove(uuid); - } - - @Override - public void deleteAll() { - voucherStore.clear(); - } -} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/VoucherRepository.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/VoucherRepository.java index 032d4dbc93..a4bd08177d 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/VoucherRepository.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/VoucherRepository.java @@ -1,21 +1,22 @@ package com.wonu606.vouchermanager.repository.voucher; import com.wonu606.vouchermanager.domain.voucher.Voucher; +import com.wonu606.vouchermanager.domain.voucher.VoucherResultSet; import java.util.List; import java.util.Optional; import java.util.UUID; public interface VoucherRepository { - Voucher save(Voucher voucher); + VoucherResultSet save(VoucherQuery query); - Optional findById(UUID id); + Optional findById(UUID uuid); - List findAll(); + VoucherResultSets findAll(); - List findAllByUuIds(List uuidList); + VoucherResultSets findAllByUuIds(UUIDList uuidList); - void deleteById(UUID id); + void deleteById(UUID uuid); void deleteAll(); } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/CustomerService.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/CustomerService.java index 1e47c5f372..3cc2f6c57a 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/CustomerService.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/CustomerService.java @@ -1,12 +1,14 @@ package com.wonu606.vouchermanager.service.customer; import com.wonu606.vouchermanager.domain.customer.Customer; -import com.wonu606.vouchermanager.domain.customer.CustomerDto; -import com.wonu606.vouchermanager.domain.customer.email.Email; -import com.wonu606.vouchermanager.domain.customer.email.EmailDto; +import com.wonu606.vouchermanager.domain.customer.CustomerResultSet; import com.wonu606.vouchermanager.repository.customer.CustomerRepository; -import java.util.List; -import java.util.Optional; +import com.wonu606.vouchermanager.service.customer.creator.CustomerCreator; +import com.wonu606.vouchermanager.service.customer.param.CustomerCreateParam; +import com.wonu606.vouchermanager.service.customer.param.OwnedVoucherParam; +import com.wonu606.vouchermanager.service.customer.param.WalletDeleteParam; +import com.wonu606.vouchermanager.service.customer.result.CustomerCreateResult; +import com.wonu606.vouchermanager.service.voucherwallet.VoucherWalletService; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; @@ -14,36 +16,37 @@ @Transactional public class CustomerService { - private final CustomerRepository customerRepository; + private final VoucherWalletService voucherWalletService; - public CustomerService(CustomerRepository customerRepository) { - this.customerRepository = customerRepository; - } + private final CustomerRepository repository; - public Customer createCustomer(CustomerDto customerDto) { - return convertDtoToCustomer(customerDto); - } + private final CustomerCreator customerCreator; - public Customer saveCustomer(Customer customer) { - return customerRepository.save(customer); + private final CustomerResultSetustomerCreateResultConverter customerCreateResultConverter; + private final CustomerListGetResultConverter customerListGetResultConverter; + + public CustomerService(CustomerRepository repository) { + this.repository = repository; } - public Optional findCustomerByEmailAddress(EmailDto emailDto) { - Email email = new Email(emailDto.getEmailAddress()); - return customerRepository.findByEmailAddress(email); + public CustomerCreateResult createCustomer(CustomerCreateParam param) { + Customer createdCustomer = customerCreator.create(param); + VoucherQuery query = voucherQueryConverter.convert(createdCustomer); + + CustomerResultSet resultSet = repository.save(query); + return customerCreateResultConverter.convert(resultSet); } - public List getCustomerList() { - return customerRepository.findAll(); + public CustomerListResult getCustomerList() { + CustomerListResultSet resultSet = repository.findAll(); + return customerListGetResultConverter.convert(resultSet); } - public List getCustomerList(List emails) { - return customerRepository.findAllByEmailAddresses(emails); + public OwnedVoucherResult findOwnedVouchersByCustomer(OwnedVoucherParam param) { + return voucherWalletService.findOwnedVouchersByCustomer(param); } - private static Customer convertDtoToCustomer(CustomerDto customerDto) { - return new Customer( - new Email(customerDto.getEmailAddress()), - customerDto.getNickname()); + public void deleteWallet(WalletDeleteParam param) { + voucherWalletService.deleteByCustomer(param); } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/creator/CustomerCreator.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/creator/CustomerCreator.java new file mode 100644 index 0000000000..9eaca148bb --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/creator/CustomerCreator.java @@ -0,0 +1,12 @@ +package com.wonu606.vouchermanager.service.customer.creator; + +import com.wonu606.vouchermanager.domain.customer.Customer; +import com.wonu606.vouchermanager.domain.customer.email.Email; +import com.wonu606.vouchermanager.service.customer.param.CustomerCreateParam; + +public class CustomerCreator { + + public Customer create(CustomerCreateParam param) { + return new Customer(new Email(param.getEmail()), param.getNickname()); + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/param/CustomerCreateParam.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/param/CustomerCreateParam.java new file mode 100644 index 0000000000..c3987ab284 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/param/CustomerCreateParam.java @@ -0,0 +1,20 @@ +package com.wonu606.vouchermanager.service.customer.param; + +public class CustomerCreateParam { + + private final String email; + private final String nickname; + + public CustomerCreateParam(String email, String nickname) { + this.email = email; + this.nickname = nickname; + } + + public String getEmail() { + return email; + } + + public String getNickname() { + return nickname; + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/param/OwnedVoucherParam.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/param/OwnedVoucherParam.java new file mode 100644 index 0000000000..3a2e645b6d --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/param/OwnedVoucherParam.java @@ -0,0 +1,16 @@ +package com.wonu606.vouchermanager.service.customer.param; + +import java.util.UUID; + +public class OwnedVoucherParam { + + private final String email; + + public OwnedVoucherParam(String email) { + this.email = email; + } + + public String getEmail() { + return email; + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/param/WalletDeleteParam.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/param/WalletDeleteParam.java new file mode 100644 index 0000000000..c03073b952 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/param/WalletDeleteParam.java @@ -0,0 +1,21 @@ +package com.wonu606.vouchermanager.service.customer.param; + +import java.util.UUID; + +public class WalletDeleteParam { + private final UUID voucherUuid; + private final String customerEmail; + + public WalletDeleteParam(UUID voucherUuid, String customerEmail) { + this.voucherUuid = voucherUuid; + this.customerEmail = customerEmail; + } + + public UUID getVoucherUuid() { + return voucherUuid; + } + + public String getCustomerEmail() { + return customerEmail; + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/result/CustomerCreateResult.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/result/CustomerCreateResult.java new file mode 100644 index 0000000000..0eec80d8cc --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/result/CustomerCreateResult.java @@ -0,0 +1,5 @@ +package com.wonu606.vouchermanager.service.customer.result; + +public class CustomerCreateResult { + +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/VoucherWalletService.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/VoucherWalletService.java index 9c38570323..e497ba4d57 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/VoucherWalletService.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/VoucherWalletService.java @@ -20,7 +20,7 @@ public VoucherWalletService( this.voucherWalletRepository = voucherWalletRepository; } - public List findOwnedVoucherByCustomer(Email email) { + public List findOwnedVouchersByCustomer(Email email) { return voucherWalletRepository.findIdByCustomerEmailAddress(email); } diff --git a/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucher/LocalMemoryVoucherVoucherRepositoryTest.java b/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucher/LocalMemoryVoucherVoucherRepositoryTest.java deleted file mode 100644 index ee1beb4a56..0000000000 --- a/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucher/LocalMemoryVoucherVoucherRepositoryTest.java +++ /dev/null @@ -1,149 +0,0 @@ -package com.wonu606.vouchermanager.repository.voucher; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.assertThatThrownBy; - -import com.wonu606.vouchermanager.domain.voucher.PercentageVoucher; -import com.wonu606.vouchermanager.domain.voucher.Voucher; -import com.wonu606.vouchermanager.domain.voucher.discountvalue.PercentageDiscountValue; -import java.util.List; -import java.util.Optional; -import java.util.UUID; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.springframework.dao.DuplicateKeyException; - -@DisplayName("LocalMemoryVoucherRepository 테스트") -public class LocalMemoryVoucherVoucherRepositoryTest { - - private LocalMemoryVoucherVoucherRepository repository; - private Voucher voucher; - - @BeforeEach - public void setUp() { - repository = new LocalMemoryVoucherVoucherRepository(); - - UUID uuid = UUID.randomUUID(); - PercentageDiscountValue discountValue = new PercentageDiscountValue(20); - voucher = new PercentageVoucher(uuid, discountValue); - } - - @AfterEach - public void tearDown() { - repository.deleteAll(); - } - - @DisplayName("Save 메소드") - @Nested - public class SaveMethod { - - @DisplayName("유효한 바우처이면_저장된바우처가 반환된다.") - @Test - public void ValidVoucher_ReturnsSavedVoucher() { - // When - Voucher savedVoucher = repository.save(voucher); - - // Then - assertThat(savedVoucher).isEqualTo(voucher); - } - - @DisplayName("중복된 UUID 바우처라면_예외가발생한다.") - @Test - public void DuplicateUUIDVoucher_ThrowsException() { - // Given - repository.save(voucher); - - // When & Then - assertThatThrownBy(() -> repository.save(voucher)) - .isInstanceOf(DuplicateKeyException.class) - .hasMessage("이미 존재하는 바우처의 uuid입니다. [uuid]: " + voucher.getUuid()); - } - } - - @DisplayName("findById 메소드") - @Nested - public class FindByIdMethod { - - @DisplayName("유효한 UUID이면_바우처가 반환된다.") - @Test - public void ValidUUID_ReturnsVoucher() { - // Given - repository.save(voucher); - - // When - Optional foundVoucher = repository.findById(voucher.getUuid()); - - // Then - assertThat(foundVoucher).isPresent(); - assertThat(foundVoucher.get()).isEqualTo(voucher); - } - - @DisplayName("존재하지않는 UUID라면_빈 Optional이 반환된다.") - @Test - public void NonexistentUUID_ReturnsEmptyOptional() { - // Given - UUID uuid = UUID.randomUUID(); - - // When - Optional foundVoucher = repository.findById(uuid); - - // Then - assertThat(foundVoucher).isEmpty(); - } - } - - @DisplayName("findAll 메소드") - @Nested - public class FindAllMethod { - - @DisplayName("모든 바우처를 가져온다.") - @Test - public void ReturnsAllVouchers() { - // Given - UUID uuid2 = UUID.randomUUID(); - PercentageDiscountValue discountValue2 = new PercentageDiscountValue(30); - Voucher voucher2 = new PercentageVoucher(uuid2, discountValue2); - - repository.save(voucher); - repository.save(voucher2); - - // When - List allVouchers = repository.findAll(); - - // Then - assertThat(allVouchers.size()).isEqualTo(2); - assertThat(allVouchers).containsExactlyInAnyOrder(voucher, voucher2); - } - } - - @DisplayName("deleteById 메소드") - @Nested - public class DeleteByIdMethod { - - @DisplayName("UUID가 존재한다면_UUID에 해당하는 바우처를 제거한다.") - @Test - public void ExistingUUID_RemovesVoucher() { - // Given - repository.save(voucher); - - // When - repository.deleteById(voucher.getUuid()); - - // Then - assertThat(repository.findById(voucher.getUuid())).isEmpty(); - } - - @DisplayName("UUID가 존재하지 않는다면_아무 일도 일어나지 않는다.") - @Test - public void NonExistingUUID_ThrowsException() { - // Given - UUID nonExistingUUID = UUID.randomUUID(); - - // When & Then - repository.deleteById(nonExistingUUID); - } - } -} diff --git a/voucher-manager/src/test/java/com/wonu606/vouchermanager/service/voucher/VoucherServiceTest.java b/voucher-manager/src/test/java/com/wonu606/vouchermanager/service/voucher/VoucherServiceTest.java index 03692cae7d..6f153fdf1f 100644 --- a/voucher-manager/src/test/java/com/wonu606/vouchermanager/service/voucher/VoucherServiceTest.java +++ b/voucher-manager/src/test/java/com/wonu606/vouchermanager/service/voucher/VoucherServiceTest.java @@ -8,7 +8,6 @@ import com.wonu606.vouchermanager.domain.voucher.Voucher; import com.wonu606.vouchermanager.domain.voucher.VoucherDto; -import com.wonu606.vouchermanager.repository.voucher.LocalMemoryVoucherVoucherRepository; import com.wonu606.vouchermanager.repository.voucher.VoucherRepository; import java.util.Arrays; import java.util.List; From d718d9af3e22f7cbfaa82f78a1848645f39bf02a Mon Sep 17 00:00:00 2001 From: wonu606 Date: Wed, 19 Jul 2023 00:46:12 +0900 Subject: [PATCH 07/37] =?UTF-8?q?refactor:=20VoucherService=20=EC=9D=98?= =?UTF-8?q?=EC=A1=B4=EC=84=B1=20=EC=A0=9C=EA=B1=B0=20=EB=B0=8F=20DTO=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../voucher/VoucherControllerCable.java | 16 +++---- .../voucher/io/VoucherConsoleIo.java | 9 ++-- .../customer/CustomerController.java | 1 - .../controller/voucher/VoucherController.java | 42 ++++++++-------- ...a => OwnedCustomersResponseConverter.java} | 2 +- ...equest.java => OwnedCustomersRequest.java} | 4 +- ...ponse.java => OwnedCustomersResponse.java} | 4 +- ...rGetResponse.java => VoucherResponse.java} | 4 +- .../service/customer/CustomerService.java | 10 ++-- .../service/voucher/VoucherService.java | 48 ++++++++++++------- .../voucher/{ => factory}/VoucherFactory.java | 13 ++--- .../voucher/param/OwnedCustomersParam.java | 16 +++++++ .../voucher/param/VoucherCreateParam.java} | 6 +-- .../param/WalletAssignParam.java | 5 ++ .../voucher/VoucherControllerCableTest.java | 8 ++-- .../service/voucher/VoucherFactoryTest.java | 15 +++--- .../service/voucher/VoucherServiceTest.java | 5 +- 17 files changed, 122 insertions(+), 86 deletions(-) rename voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/{VoucherGetOwnedCustomersResponseConverter.java => OwnedCustomersResponseConverter.java} (54%) rename voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/reqeust/{VoucherGetOwnedCustomersRequest.java => OwnedCustomersRequest.java} (66%) rename voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/response/{VoucherGetOwnedCustomersResponse.java => OwnedCustomersResponse.java} (67%) rename voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/response/{VoucherGetResponse.java => VoucherResponse.java} (73%) rename voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/{ => factory}/VoucherFactory.java (73%) create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/param/OwnedCustomersParam.java rename voucher-manager/src/main/java/com/wonu606/vouchermanager/{domain/voucher/VoucherDto.java => service/voucher/param/VoucherCreateParam.java} (64%) create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/param/WalletAssignParam.java diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/voucher/VoucherControllerCable.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/voucher/VoucherControllerCable.java index 243ac0a6ea..32e56275be 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/voucher/VoucherControllerCable.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/voucher/VoucherControllerCable.java @@ -3,10 +3,10 @@ import com.wonu606.vouchermanager.console.controllercable.voucher.io.VoucherConsoleIo; import com.wonu606.vouchermanager.controller.voucher.VoucherController; import com.wonu606.vouchermanager.controller.voucher.reqeust.VoucherCreateRequest; -import com.wonu606.vouchermanager.controller.voucher.reqeust.VoucherGetOwnedCustomersRequest; +import com.wonu606.vouchermanager.controller.voucher.reqeust.OwnedCustomersRequest; import com.wonu606.vouchermanager.controller.voucher.reqeust.WalletAssignRequest; -import com.wonu606.vouchermanager.controller.voucher.response.VoucherGetOwnedCustomersResponse; -import com.wonu606.vouchermanager.controller.voucher.response.VoucherGetResponse; +import com.wonu606.vouchermanager.controller.voucher.response.OwnedCustomersResponse; +import com.wonu606.vouchermanager.controller.voucher.response.VoucherResponse; import org.springframework.stereotype.Component; @Component @@ -39,8 +39,8 @@ private void executeMenuAction(VoucherControllerMenu menu) { return; case LIST: - VoucherGetResponse voucherGetResponse = controller.getVoucherList(); - consoleIo.displayVoucherList(voucherGetResponse); + VoucherResponse voucherResponse = controller.getVoucherList(); + consoleIo.displayVoucherList(voucherResponse); return; case CREATE: @@ -54,9 +54,9 @@ private void executeMenuAction(VoucherControllerMenu menu) { case CUSTOMER_LIST: String voucherId = consoleIo.readString("VoucherId"); - VoucherGetOwnedCustomersResponse voucherGetOwnedCustomersResponse = controller.getOwnedCustomersByVoucher( - new VoucherGetOwnedCustomersRequest(voucherId)); - consoleIo.displayCustomerList(voucherGetOwnedCustomersResponse); + OwnedCustomersResponse ownedCustomersResponse = controller.getOwnedCustomersByVoucher( + new OwnedCustomersRequest(voucherId)); + consoleIo.displayCustomerList(ownedCustomersResponse); return; default: diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/voucher/io/VoucherConsoleIo.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/voucher/io/VoucherConsoleIo.java index b2ae831dd9..aeb858fc4e 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/voucher/io/VoucherConsoleIo.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/voucher/io/VoucherConsoleIo.java @@ -4,9 +4,8 @@ import com.wonu606.vouchermanager.console.ConsoleInput; import com.wonu606.vouchermanager.console.ConsolePrinter; import com.wonu606.vouchermanager.console.controllercable.voucher.VoucherControllerMenu; -import com.wonu606.vouchermanager.controller.customer.response.CustomerResponse; -import com.wonu606.vouchermanager.controller.voucher.response.VoucherGetOwnedCustomersResponse; -import com.wonu606.vouchermanager.controller.voucher.response.VoucherGetResponse; +import com.wonu606.vouchermanager.controller.voucher.response.OwnedCustomersResponse; +import com.wonu606.vouchermanager.controller.voucher.response.VoucherResponse; import java.util.List; import org.springframework.stereotype.Component; @@ -29,13 +28,13 @@ public String selectVoucherType() { return input.readString(VoucherConsoleType.getAllNames(), "Type"); } - public void displayVoucherList(VoucherGetResponse voucherList) { + public void displayVoucherList(VoucherResponse voucherList) { printer.displayMessage("=== 바우처 리스트 ==="); List voucherIds = voucherList.getVoucherIds(); voucherIds.forEach(printer::displayMessage); } - public void displayCustomerList(VoucherGetOwnedCustomersResponse response) { + public void displayCustomerList(OwnedCustomersResponse response) { printer.displayMessage("=== 보유한 Customer 리스트 ==="); List emails = response.getEmails(); emails.forEach(printer::displayMessage); diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/CustomerController.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/CustomerController.java index f25dfd2514..967fe5938e 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/CustomerController.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/CustomerController.java @@ -27,7 +27,6 @@ public class CustomerController { private final CustomerCreateParamConverter customerCreateParamConverter; private final OwnedVoucherParamConverter ownedVoucherParamConverter; private final WalletDeleteParamConverter walletDeleteParamConverter; - private final CustomerCreateResponseConverter customerCreateResponseConverter; private final CustomerListResponseConverter customerListResponseConverter; private final OwnedVoucherResponseConverter ownedVouchersResponseConverter; diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/VoucherController.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/VoucherController.java index f5f8b03906..bf988e0981 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/VoucherController.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/VoucherController.java @@ -1,15 +1,18 @@ package com.wonu606.vouchermanager.controller.voucher; import com.wonu606.vouchermanager.controller.voucher.converter.VoucherCreateResponseConverter; -import com.wonu606.vouchermanager.controller.voucher.converter.VoucherGetOwnedCustomersResponseConverter; +import com.wonu606.vouchermanager.controller.voucher.converter.OwnedCustomersResponseConverter; import com.wonu606.vouchermanager.controller.voucher.converter.VoucherGetResponseConverter; +import com.wonu606.vouchermanager.controller.voucher.reqeust.OwnedCustomersRequest; import com.wonu606.vouchermanager.controller.voucher.reqeust.VoucherCreateRequest; -import com.wonu606.vouchermanager.controller.voucher.reqeust.VoucherGetOwnedCustomersRequest; import com.wonu606.vouchermanager.controller.voucher.reqeust.WalletAssignRequest; +import com.wonu606.vouchermanager.controller.voucher.response.OwnedCustomersResponse; import com.wonu606.vouchermanager.controller.voucher.response.VoucherCreateResponse; -import com.wonu606.vouchermanager.controller.voucher.response.VoucherGetOwnedCustomersResponse; -import com.wonu606.vouchermanager.controller.voucher.response.VoucherGetResponse; +import com.wonu606.vouchermanager.controller.voucher.response.VoucherResponse; +import com.wonu606.vouchermanager.service.voucher.param.OwnedCustomersParam; +import com.wonu606.vouchermanager.service.voucher.param.VoucherCreateParam; import com.wonu606.vouchermanager.service.voucher.VoucherService; +import com.wonu606.vouchermanager.service.voucherwallet.param.WalletAssignParam; import org.springframework.stereotype.Component; @Component @@ -18,52 +21,45 @@ public class VoucherController { private final VoucherService service; + private final VoucherCreateParamConverter voucherCreateParamConverter; + private final OwnedCustomersParamConverter ownedCustomersParamConverter; + private final VoucherCreateResponseConverter voucherCreateResponseConverter; private final VoucherGetResponseConverter voucherGetResponseConverter; - private final VoucherGetOwnedCustomersResponseConverter voucherGetOwnedCustomersResponseConverter; + private final OwnedCustomersResponseConverter ownedCustomersResponseConverter; public VoucherController(VoucherService service, VoucherCreateResponseConverter voucherCreateResponseConverter, VoucherGetResponseConverter voucherGetResponseConverter, - VoucherGetOwnedCustomersResponseConverter voucherGetOwnedCustomersResponseConverter) { + OwnedCustomersResponseConverter OwnedCustomersResponseConverter) { this.service = service; this.voucherCreateResponseConverter = voucherCreateResponseConverter; this.voucherGetResponseConverter = voucherGetResponseConverter; - this.voucherGetOwnedCustomersResponseConverter = voucherGetOwnedCustomersResponseConverter; + this.ownedCustomersResponseConverter = OwnedCustomersResponseConverter; } public VoucherCreateResponse createVoucher(VoucherCreateRequest request) { - VoucherCreateParam param = createVoucherCreateParam(request); + VoucherCreateParam param = voucherCreateParamConverter.convert(request); VoucherCreateResult result = service.createVoucher(param); return voucherCreateResponseConverter.convert(result); } - public VoucherGetResponse getVoucherList() { + public VoucherResponse getVoucherList() { VoucherGetResult result = service.getVoucherList(); return voucherGetResponseConverter.convert(result); } - public VoucherGetOwnedCustomersResponse getOwnedCustomersByVoucher( - VoucherGetOwnedCustomersRequest request) { - VoucherGetOwnedCustomersParam param = createVoucherGetOwnedCustomersParam(request); - VoucherGetOwnedCustomersResult result = service.findOwnedCustomersByVoucher(param); + public OwnedCustomersResponse getOwnedCustomersByVoucher(OwnedCustomersRequest request) { + OwnedCustomersParam param = ownedCustomersParamConverter.convert(request); + OwnedCustomersResult result = service.findOwnedCustomersByVoucher(param); - return voucherGetOwnedCustomersResponseConverter.convert(result); + return ownedCustomersResponseConverter.convert(result); } public void assignWallet(WalletAssignRequest request) { WalletAssignParam param = createWalletAssignParam(request); WalletAssignResult result = service.assignWallet(param); } - - private VoucherCreateParam createVoucherCreateParam(VoucherCreateRequest request) { - - } - - private VoucherGetOwnedCustomersParam createVoucherGetOwnedCustomersParam( - VoucherGetOwnedCustomersRequest request) { - - } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/VoucherGetOwnedCustomersResponseConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/OwnedCustomersResponseConverter.java similarity index 54% rename from voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/VoucherGetOwnedCustomersResponseConverter.java rename to voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/OwnedCustomersResponseConverter.java index 8b35a76009..85b44d4a7e 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/VoucherGetOwnedCustomersResponseConverter.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/OwnedCustomersResponseConverter.java @@ -1,5 +1,5 @@ package com.wonu606.vouchermanager.controller.voucher.converter; -public class VoucherGetOwnedCustomersResponseConverter { +public class OwnedCustomersResponseConverter { } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/reqeust/VoucherGetOwnedCustomersRequest.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/reqeust/OwnedCustomersRequest.java similarity index 66% rename from voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/reqeust/VoucherGetOwnedCustomersRequest.java rename to voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/reqeust/OwnedCustomersRequest.java index 40a968cfb5..d8dd84594e 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/reqeust/VoucherGetOwnedCustomersRequest.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/reqeust/OwnedCustomersRequest.java @@ -1,10 +1,10 @@ package com.wonu606.vouchermanager.controller.voucher.reqeust; -public class VoucherGetOwnedCustomersRequest { +public class OwnedCustomersRequest { private final String voucherId; - public VoucherGetOwnedCustomersRequest(String voucherId) { + public OwnedCustomersRequest(String voucherId) { this.voucherId = voucherId; } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/response/VoucherGetOwnedCustomersResponse.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/response/OwnedCustomersResponse.java similarity index 67% rename from voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/response/VoucherGetOwnedCustomersResponse.java rename to voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/response/OwnedCustomersResponse.java index e51de863f7..d9584199f4 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/response/VoucherGetOwnedCustomersResponse.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/response/OwnedCustomersResponse.java @@ -2,11 +2,11 @@ import java.util.List; -public class VoucherGetOwnedCustomersResponse { +public class OwnedCustomersResponse { private final List emails; - public VoucherGetOwnedCustomersResponse(List emails) { + public OwnedCustomersResponse(List emails) { this.emails = emails; } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/response/VoucherGetResponse.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/response/VoucherResponse.java similarity index 73% rename from voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/response/VoucherGetResponse.java rename to voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/response/VoucherResponse.java index 8fcbe11d49..3d53a24cd2 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/response/VoucherGetResponse.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/response/VoucherResponse.java @@ -2,11 +2,11 @@ import java.util.List; -public class VoucherGetResponse { +public class VoucherResponse { private final List voucherIds; - public VoucherGetResponse(List voucherIds) { + public VoucherResponse(List voucherIds) { this.voucherIds = voucherIds; } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/CustomerService.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/CustomerService.java index 3cc2f6c57a..e796302237 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/CustomerService.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/CustomerService.java @@ -25,15 +25,19 @@ public class CustomerService { private final CustomerResultSetustomerCreateResultConverter customerCreateResultConverter; private final CustomerListGetResultConverter customerListGetResultConverter; - public CustomerService(CustomerRepository repository) { + public CustomerService(VoucherWalletService voucherWalletService, CustomerRepository repository) { + this.voucherWalletService = voucherWalletService; this.repository = repository; + this.customerCreator = new CustomerCreator(); + this.customerCreateResultConverter; + this.customerListGetResultConverter; } public CustomerCreateResult createCustomer(CustomerCreateParam param) { Customer createdCustomer = customerCreator.create(param); - VoucherQuery query = voucherQueryConverter.convert(createdCustomer); + CustomerCreateQuery query = customerQueryConverter.convert(createdCustomer); - CustomerResultSet resultSet = repository.save(query); + CustomerCreateResultSet resultSet = repository.save(query); return customerCreateResultConverter.convert(resultSet); } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/VoucherService.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/VoucherService.java index 6d3fbb65af..df763a2491 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/VoucherService.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/VoucherService.java @@ -1,10 +1,13 @@ package com.wonu606.vouchermanager.service.voucher; import com.wonu606.vouchermanager.domain.voucher.Voucher; -import com.wonu606.vouchermanager.domain.voucher.VoucherDto; +import com.wonu606.vouchermanager.domain.voucher.VoucherResultSet; import com.wonu606.vouchermanager.repository.voucher.VoucherRepository; -import java.util.List; -import java.util.UUID; +import com.wonu606.vouchermanager.service.voucher.factory.VoucherFactory; +import com.wonu606.vouchermanager.service.voucher.param.OwnedCustomersParam; +import com.wonu606.vouchermanager.service.voucher.param.VoucherCreateParam; +import com.wonu606.vouchermanager.service.voucherwallet.VoucherWalletService; +import com.wonu606.vouchermanager.service.voucherwallet.param.WalletAssignParam; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.dao.DuplicateKeyException; @@ -18,40 +21,51 @@ public class VoucherService { private static final Logger log = LoggerFactory.getLogger(VoucherService.class); private static final int MAX_RETRIES = 3; - private final VoucherFactory factory; - private final VoucherRepository voucherRepository; + private final VoucherWalletService voucherWalletService; + private final VoucherRepository repository; + private final VoucherFactory factory; - public VoucherService(VoucherFactory factory, VoucherRepository voucherRepository) { + public VoucherService(VoucherWalletService voucherWalletService, + VoucherRepository repository, VoucherFactory factory) { + this.voucherWalletService = voucherWalletService; + this.repository = repository; this.factory = factory; - this.voucherRepository = voucherRepository; } - public Voucher createVoucher(VoucherDto voucherDto) { - return createVoucher(voucherDto, 0); + public VoucherCreateResult createVoucher(VoucherCreateParam param) { + return createVoucher(param, 0); + } + + public VoucherListResult getVoucherList() { + VoucherListResultSet resultSet = repository.findAll(); + return VoucherListResultConverter.convert(resultSet); } - public List getVoucherList() { - return voucherRepository.findAll(); + public OwnedCustomersResult findOwnedCustomersByVoucher(OwnedCustomersParam param) { + return voucherWalletService.findOwnedCustomersByVoucher(param); } - public List getVoucherList(List voucherIdList) { - return voucherRepository.findAllByUuIds(voucherIdList); + public WalletAssignResult assignWallet(WalletAssignParam param) { + return voucherWalletService.assignWallet(param); } - private Voucher createVoucher(VoucherDto voucherDto, int retryCount) { + private VoucherCreateResult createVoucher(VoucherCreateParam voucherCreateParam, + int retryCount) { if (retryCount > MAX_RETRIES) { log.warn("uuid를 재성성하여 저장하는 시도 최대 횟수 {}를 초과하였습니다. ", MAX_RETRIES); throw new IllegalStateException(); } - Voucher voucher = factory.create(voucherDto); + Voucher voucher = factory.create(voucherCreateParam); + VoucherQuery query = voucherQueryConverter.convert(voucher); try { - return voucherRepository.save(voucher); + VoucherResultSet resultSet = repository.save(query); } catch (DuplicateKeyException e) { log.info("DuplicateKeyException가 발생하였습니다. ", e); - return createVoucher(voucherDto, retryCount + 1); + return createVoucher(voucherCreateParam, retryCount + 1); } + return voucherCreateResultConverter.convert(resultSet); } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/VoucherFactory.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/factory/VoucherFactory.java similarity index 73% rename from voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/VoucherFactory.java rename to voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/factory/VoucherFactory.java index 426ab372b0..226f3ab0a5 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/VoucherFactory.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/factory/VoucherFactory.java @@ -1,12 +1,13 @@ -package com.wonu606.vouchermanager.service.voucher; +package com.wonu606.vouchermanager.service.voucher.factory; import com.wonu606.vouchermanager.domain.voucher.FixedAmountVoucher; import com.wonu606.vouchermanager.domain.voucher.PercentageVoucher; import com.wonu606.vouchermanager.domain.voucher.Voucher; -import com.wonu606.vouchermanager.domain.voucher.VoucherDto; +import com.wonu606.vouchermanager.service.voucher.param.VoucherCreateParam; import com.wonu606.vouchermanager.domain.voucher.discountvalue.FixedAmountValue; import com.wonu606.vouchermanager.domain.voucher.discountvalue.PercentageDiscountValue; import com.wonu606.vouchermanager.service.util.UUIDGenerator; +import com.wonu606.vouchermanager.service.voucher.VoucherType; import org.springframework.stereotype.Component; @Component @@ -18,17 +19,17 @@ public VoucherFactory(UUIDGenerator uuidGenerator) { this.uuidGenerator = uuidGenerator; } - public Voucher create(VoucherDto voucherDto) { - VoucherType creationType = VoucherType.getVoucherTypeByName(voucherDto.getType()); + public Voucher create(VoucherCreateParam voucherCreateParam) { + VoucherType creationType = VoucherType.getVoucherTypeByName(voucherCreateParam.getType()); switch (creationType) { case FIXED: FixedAmountValue fixedAmountValue = - new FixedAmountValue(voucherDto.getDiscountValue()); + new FixedAmountValue(voucherCreateParam.getDiscountValue()); return new FixedAmountVoucher(uuidGenerator.generateUUID(), fixedAmountValue); case PERCENT: PercentageDiscountValue percentageDiscountValue = - new PercentageDiscountValue(voucherDto.getDiscountValue()); + new PercentageDiscountValue(voucherCreateParam.getDiscountValue()); return new PercentageVoucher(uuidGenerator.generateUUID(), percentageDiscountValue); default: throw new IllegalArgumentException("바우처 팩토리에서 생성할 수 없는 타입입니다."); diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/param/OwnedCustomersParam.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/param/OwnedCustomersParam.java new file mode 100644 index 0000000000..d2845f20b5 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/param/OwnedCustomersParam.java @@ -0,0 +1,16 @@ +package com.wonu606.vouchermanager.service.voucher.param; + +import java.util.UUID; + +public class OwnedCustomersParam { + + private final UUID voucherUuid; + + public OwnedCustomersParam(UUID voucherUuid) { + this.voucherUuid = voucherUuid; + } + + public UUID getVoucherUuid() { + return voucherUuid; + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/voucher/VoucherDto.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/param/VoucherCreateParam.java similarity index 64% rename from voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/voucher/VoucherDto.java rename to voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/param/VoucherCreateParam.java index 2a7e1ef454..5bd0fce18a 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/voucher/VoucherDto.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/param/VoucherCreateParam.java @@ -1,11 +1,11 @@ -package com.wonu606.vouchermanager.domain.voucher; +package com.wonu606.vouchermanager.service.voucher.param; -public class VoucherDto { +public class VoucherCreateParam { private final String type; private final double discountValue; - public VoucherDto(String type, double discountValue) { + public VoucherCreateParam(String type, double discountValue) { this.type = type; this.discountValue = discountValue; } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/param/WalletAssignParam.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/param/WalletAssignParam.java new file mode 100644 index 0000000000..3466f16034 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/param/WalletAssignParam.java @@ -0,0 +1,5 @@ +package com.wonu606.vouchermanager.service.voucherwallet.param; + +public class WalletAssignParam { + +} diff --git a/voucher-manager/src/test/java/com/wonu606/vouchermanager/console/controllercable/voucher/VoucherControllerCableTest.java b/voucher-manager/src/test/java/com/wonu606/vouchermanager/console/controllercable/voucher/VoucherControllerCableTest.java index 916ead7785..f310b3a319 100644 --- a/voucher-manager/src/test/java/com/wonu606/vouchermanager/console/controllercable/voucher/VoucherControllerCableTest.java +++ b/voucher-manager/src/test/java/com/wonu606/vouchermanager/console/controllercable/voucher/VoucherControllerCableTest.java @@ -8,7 +8,7 @@ import com.wonu606.vouchermanager.console.controllercable.voucher.io.VoucherConsoleIo; import com.wonu606.vouchermanager.controller.voucher.VoucherController; import com.wonu606.vouchermanager.domain.voucher.Voucher; -import com.wonu606.vouchermanager.domain.voucher.VoucherDto; +import com.wonu606.vouchermanager.service.voucher.param.VoucherCreateParam; import java.util.Arrays; import java.util.List; import org.junit.jupiter.api.BeforeEach; @@ -66,7 +66,7 @@ public void GivenListMenuSelected_WhenRun_ThenDisplayVoucherList() { @Test public void GivenCreateMenuSelected_WhenRun_ThenCreateVoucher() { // Given - VoucherDto expectedDto = new VoucherDto("FIXED", 10.0); + VoucherCreateParam expectedDto = new VoucherCreateParam("FIXED", 10.0); given(voucherConsoleIoMock.selectMenu()).willReturn(VoucherControllerMenu.CREATE, VoucherControllerMenu.EXIT); given(voucherConsoleIoMock.selectVoucherType()).willReturn("FIXED"); @@ -78,11 +78,11 @@ public void GivenCreateMenuSelected_WhenRun_ThenCreateVoucher() { consoleInterface.run(); // Then - ArgumentCaptor argument = ArgumentCaptor.forClass(VoucherDto.class); + ArgumentCaptor argument = ArgumentCaptor.forClass(VoucherCreateParam.class); then(controllerMock).should().createVoucher(argument.capture()); // then(controllerMock).should().createVoucher(expectedDto); // error - VoucherDto actualDto = argument.getValue(); + VoucherCreateParam actualDto = argument.getValue(); assertThat(actualDto.getType()).isEqualTo(expectedDto.getType()); assertThat(actualDto.getDiscountValue()).isEqualTo(expectedDto.getDiscountValue()); } diff --git a/voucher-manager/src/test/java/com/wonu606/vouchermanager/service/voucher/VoucherFactoryTest.java b/voucher-manager/src/test/java/com/wonu606/vouchermanager/service/voucher/VoucherFactoryTest.java index 0c291a3f24..d60b62ca6d 100644 --- a/voucher-manager/src/test/java/com/wonu606/vouchermanager/service/voucher/VoucherFactoryTest.java +++ b/voucher-manager/src/test/java/com/wonu606/vouchermanager/service/voucher/VoucherFactoryTest.java @@ -7,8 +7,9 @@ import com.wonu606.vouchermanager.domain.voucher.FixedAmountVoucher; import com.wonu606.vouchermanager.domain.voucher.PercentageVoucher; import com.wonu606.vouchermanager.domain.voucher.Voucher; -import com.wonu606.vouchermanager.domain.voucher.VoucherDto; +import com.wonu606.vouchermanager.service.voucher.param.VoucherCreateParam; import com.wonu606.vouchermanager.service.util.UUIDGenerator; +import com.wonu606.vouchermanager.service.voucher.factory.VoucherFactory; import java.util.UUID; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; @@ -34,10 +35,10 @@ public void Create_TypeIsFIXED_CreatesFixedAmountVoucher() { UUID testUuid = UUID.randomUUID(); given(uuidGenerator.generateUUID()).willReturn(testUuid); double discountValue = 10.0; - VoucherDto voucherDto = new VoucherDto("FIXED", discountValue); + VoucherCreateParam voucherCreateParam = new VoucherCreateParam("FIXED", discountValue); // When - Voucher voucher = factory.create(voucherDto); + Voucher voucher = factory.create(voucherCreateParam); // Then assertThat(voucher).isInstanceOf(FixedAmountVoucher.class); @@ -53,10 +54,10 @@ public void Create_TypeIsPERCENT_CreatesPercentageVoucher() { UUID testUuid = UUID.randomUUID(); given(uuidGenerator.generateUUID()).willReturn(testUuid); double discountValue = 10.0; - VoucherDto voucherDto = new VoucherDto("PERCENT", discountValue); + VoucherCreateParam voucherCreateParam = new VoucherCreateParam("PERCENT", discountValue); // When - Voucher voucher = factory.create(voucherDto); + Voucher voucher = factory.create(voucherCreateParam); // Then assertThat(voucher).isInstanceOf(PercentageVoucher.class); @@ -71,10 +72,10 @@ public void Create_TypeDoesNotExist_ThrowsException() { // Given UUID uuid = UUID.randomUUID(); double discountValue = 10.0; - VoucherDto voucherDto = new VoucherDto("INVALID", discountValue); + VoucherCreateParam voucherCreateParam = new VoucherCreateParam("INVALID", discountValue); // When & Then - assertThatThrownBy(() -> factory.create(voucherDto)) + assertThatThrownBy(() -> factory.create(voucherCreateParam)) .isInstanceOf(IllegalArgumentException.class) .hasMessage("존재하지 않는 바우처 타입입니다."); } diff --git a/voucher-manager/src/test/java/com/wonu606/vouchermanager/service/voucher/VoucherServiceTest.java b/voucher-manager/src/test/java/com/wonu606/vouchermanager/service/voucher/VoucherServiceTest.java index 6f153fdf1f..eda566018a 100644 --- a/voucher-manager/src/test/java/com/wonu606/vouchermanager/service/voucher/VoucherServiceTest.java +++ b/voucher-manager/src/test/java/com/wonu606/vouchermanager/service/voucher/VoucherServiceTest.java @@ -7,8 +7,9 @@ import static org.mockito.Mockito.times; import com.wonu606.vouchermanager.domain.voucher.Voucher; -import com.wonu606.vouchermanager.domain.voucher.VoucherDto; +import com.wonu606.vouchermanager.service.voucher.param.VoucherCreateParam; import com.wonu606.vouchermanager.repository.voucher.VoucherRepository; +import com.wonu606.vouchermanager.service.voucher.factory.VoucherFactory; import java.util.Arrays; import java.util.List; import org.junit.jupiter.api.BeforeEach; @@ -35,7 +36,7 @@ public void setup() { @DisplayName("VoucherDto가 주어지고_createVoucher하면_바우처를 생성한다.") public void GivenVoucherDto_WhenCreateVoucher_ThenReturnExpectedVoucher() { // Given - VoucherDto dto = mock(VoucherDto.class); + VoucherCreateParam dto = mock(VoucherCreateParam.class); Voucher expectedVoucher = mock(Voucher.class); given(factory.create(dto)).willReturn(expectedVoucher); From a9001be9ae64436cd18e0c37f4ac99077274a2f0 Mon Sep 17 00:00:00 2001 From: wonu606 Date: Wed, 19 Jul 2023 01:24:38 +0900 Subject: [PATCH 08/37] =?UTF-8?q?refactor:=20VoucherWalletService=20?= =?UTF-8?q?=EC=9D=98=EC=A1=B4=EC=84=B1=20=EC=A0=9C=EA=B1=B0=20=EB=B0=8F=20?= =?UTF-8?q?DTO=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../voucher/io/VoucherConsoleType.java | 2 +- .../customer/CustomerController.java | 4 +- .../converter/OwnedVoucherParamConverter.java | 2 +- .../converter/WalletDeleteParamConverter.java | 16 ++++++ .../controller/voucher/VoucherController.java | 2 +- .../voucherwallet/VoucherWalletDto.java | 27 ---------- .../JdbcVoucherWalletRepository.java | 10 ++-- .../VoucherWalletRepository.java | 6 +-- .../service/customer/CustomerService.java | 9 ++-- .../service/voucher/VoucherService.java | 2 +- .../voucher/factory/VoucherFactory.java | 1 - .../voucher/{ => factory}/VoucherType.java | 2 +- .../voucherwallet/VoucherWalletService.java | 51 ++++++++++++------- .../param/OwnedCustomersParam.java | 2 +- .../param/OwnedVoucherParam.java | 2 +- .../param/WalletAssignParam.java | 23 +++++++++ .../param/WalletDeleteParam.java | 2 +- .../JdbcVoucherWalletRepositoryTest.java | 8 +-- 18 files changed, 99 insertions(+), 72 deletions(-) delete mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/voucherwallet/VoucherWalletDto.java rename voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/{ => factory}/VoucherType.java (91%) rename voucher-manager/src/main/java/com/wonu606/vouchermanager/service/{voucher => voucherwallet}/param/OwnedCustomersParam.java (80%) rename voucher-manager/src/main/java/com/wonu606/vouchermanager/service/{customer => voucherwallet}/param/OwnedVoucherParam.java (78%) rename voucher-manager/src/main/java/com/wonu606/vouchermanager/service/{customer => voucherwallet}/param/WalletDeleteParam.java (87%) diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/voucher/io/VoucherConsoleType.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/voucher/io/VoucherConsoleType.java index 9fca77d14f..1e2176cb67 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/voucher/io/VoucherConsoleType.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/voucher/io/VoucherConsoleType.java @@ -1,6 +1,6 @@ package com.wonu606.vouchermanager.console.controllercable.voucher.io; -import com.wonu606.vouchermanager.service.voucher.VoucherType; +import com.wonu606.vouchermanager.service.voucher.factory.VoucherType; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/CustomerController.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/CustomerController.java index 967fe5938e..80e79b048d 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/CustomerController.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/CustomerController.java @@ -14,8 +14,8 @@ import com.wonu606.vouchermanager.controller.customer.response.OwnedVouchersResponse; import com.wonu606.vouchermanager.service.customer.CustomerService; import com.wonu606.vouchermanager.service.customer.param.CustomerCreateParam; -import com.wonu606.vouchermanager.service.customer.param.OwnedVoucherParam; -import com.wonu606.vouchermanager.service.customer.param.WalletDeleteParam; +import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedVoucherParam; +import com.wonu606.vouchermanager.service.voucherwallet.param.WalletDeleteParam; import com.wonu606.vouchermanager.service.customer.result.CustomerCreateResult; import org.springframework.stereotype.Component; diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/OwnedVoucherParamConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/OwnedVoucherParamConverter.java index f63cb49572..e749eec5e0 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/OwnedVoucherParamConverter.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/OwnedVoucherParamConverter.java @@ -1,7 +1,7 @@ package com.wonu606.vouchermanager.controller.customer.converter; import com.wonu606.vouchermanager.controller.customer.request.OwnedVouchersRequest; -import com.wonu606.vouchermanager.service.customer.param.OwnedVoucherParam; +import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedVoucherParam; public class OwnedVoucherParamConverter { diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/WalletDeleteParamConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/WalletDeleteParamConverter.java index 6b254a280a..54a6c0f923 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/WalletDeleteParamConverter.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/WalletDeleteParamConverter.java @@ -1,5 +1,21 @@ package com.wonu606.vouchermanager.controller.customer.converter; +import java.util.UUID; + public class WalletDeleteParamConverter { + private final UUID voucherUuid; + private final String customerEmail; + + public WalletDeleteParamConverter(UUID voucherUuid, String customerEmail) { + this.voucherUuid = voucherUuid; + this.customerEmail = customerEmail; + } + + public UUID getVoucherUuid() { + return voucherUuid; + } + public String getCustomerEmail() { + return customerEmail; + } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/VoucherController.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/VoucherController.java index bf988e0981..9e0ed8f901 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/VoucherController.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/VoucherController.java @@ -9,7 +9,7 @@ import com.wonu606.vouchermanager.controller.voucher.response.OwnedCustomersResponse; import com.wonu606.vouchermanager.controller.voucher.response.VoucherCreateResponse; import com.wonu606.vouchermanager.controller.voucher.response.VoucherResponse; -import com.wonu606.vouchermanager.service.voucher.param.OwnedCustomersParam; +import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedCustomersParam; import com.wonu606.vouchermanager.service.voucher.param.VoucherCreateParam; import com.wonu606.vouchermanager.service.voucher.VoucherService; import com.wonu606.vouchermanager.service.voucherwallet.param.WalletAssignParam; diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/voucherwallet/VoucherWalletDto.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/voucherwallet/VoucherWalletDto.java deleted file mode 100644 index d501242424..0000000000 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/voucherwallet/VoucherWalletDto.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.wonu606.vouchermanager.domain.voucherwallet; - -import com.wonu606.vouchermanager.domain.customer.email.Email; -import java.util.UUID; - -public class VoucherWalletDto { - - private final UUID voucherId; - private final String emailAddress; - - public VoucherWalletDto(UUID voucherId, String emailAddress) { - this.voucherId = voucherId; - this.emailAddress = emailAddress; - } - - public UUID getVoucherId() { - return voucherId; - } - - public String getEmailAddress() { - return emailAddress; - } - - public VoucherWallet toEntity() { - return new VoucherWallet(getVoucherId(), new Email(getEmailAddress())); - } -} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/JdbcVoucherWalletRepository.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/JdbcVoucherWalletRepository.java index 618ca1f4f9..514f9fdbae 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/JdbcVoucherWalletRepository.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/JdbcVoucherWalletRepository.java @@ -18,7 +18,7 @@ public JdbcVoucherWalletRepository(DataSource dataSource) { } @Override - public List findIdByCustomerEmailAddress(Email email) { + public List findOwnedVouchersByCustomer(Email email) { String selectSql = "SELECT voucher_id FROM customer_voucher_wallet WHERE customer_email_address = ?"; return jdbcTemplate.query(selectSql, (rs, rowNum) -> UUID.fromString(rs.getString("voucher_id")), @@ -26,7 +26,7 @@ public List findIdByCustomerEmailAddress(Email email) { } @Override - public void deleteByWallet(VoucherWallet wallet) { + public void delete(VoucherWallet wallet) { String deleteSql = "DELETE FROM customer_voucher_wallet WHERE customer_email_address = ? AND voucher_id = ?"; jdbcTemplate.update(deleteSql, wallet.getEmailAddress(), @@ -35,19 +35,19 @@ public void deleteByWallet(VoucherWallet wallet) { @Override public VoucherWallet save(VoucherWallet wallet) { - insertCustomerVoucherWallet(wallet); + insert(wallet); return wallet; } @Override - public List findEmailAddressesByVoucherId(UUID voucherId) { + public List findOwnedCustomerByVoucher(UUID voucherId) { String selectSql = "SELECT customer_email_address FROM customer_voucher_wallet WHERE voucher_id = ?"; return jdbcTemplate.query(selectSql, (rs, rowNum) -> rs.getString("customer_email_address"), voucherId.toString()); } - private void insertCustomerVoucherWallet(VoucherWallet wallet) { + private void insert(VoucherWallet wallet) { String insertSql = "INSERT INTO customer_voucher_wallet (customer_email_address, voucher_id) VALUES (?, ?)"; jdbcTemplate.update(insertSql, wallet.getEmailAddress(), diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/VoucherWalletRepository.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/VoucherWalletRepository.java index 5a3385f3eb..099107b364 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/VoucherWalletRepository.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/VoucherWalletRepository.java @@ -7,11 +7,11 @@ public interface VoucherWalletRepository { - List findIdByCustomerEmailAddress(Email email); + List findOwnedVouchersByCustomer(Email email); - void deleteByWallet(VoucherWallet voucherWallet); + void delete(VoucherWallet voucherWallet); VoucherWallet save(VoucherWallet voucherWallet); - List findEmailAddressesByVoucherId(UUID voucherId); + List findOwnedCustomerByVoucher(UUID voucherId); } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/CustomerService.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/CustomerService.java index e796302237..b8e6cd4a60 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/CustomerService.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/CustomerService.java @@ -1,12 +1,11 @@ package com.wonu606.vouchermanager.service.customer; import com.wonu606.vouchermanager.domain.customer.Customer; -import com.wonu606.vouchermanager.domain.customer.CustomerResultSet; import com.wonu606.vouchermanager.repository.customer.CustomerRepository; import com.wonu606.vouchermanager.service.customer.creator.CustomerCreator; import com.wonu606.vouchermanager.service.customer.param.CustomerCreateParam; -import com.wonu606.vouchermanager.service.customer.param.OwnedVoucherParam; -import com.wonu606.vouchermanager.service.customer.param.WalletDeleteParam; +import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedVoucherParam; +import com.wonu606.vouchermanager.service.voucherwallet.param.WalletDeleteParam; import com.wonu606.vouchermanager.service.customer.result.CustomerCreateResult; import com.wonu606.vouchermanager.service.voucherwallet.VoucherWalletService; import org.springframework.stereotype.Component; @@ -46,11 +45,11 @@ public CustomerListResult getCustomerList() { return customerListGetResultConverter.convert(resultSet); } - public OwnedVoucherResult findOwnedVouchersByCustomer(OwnedVoucherParam param) { + public OwnedVouchersResult findOwnedVouchersByCustomer(OwnedVoucherParam param) { return voucherWalletService.findOwnedVouchersByCustomer(param); } public void deleteWallet(WalletDeleteParam param) { - voucherWalletService.deleteByCustomer(param); + voucherWalletService.deleteWallet(param); } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/VoucherService.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/VoucherService.java index df763a2491..3f444663e4 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/VoucherService.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/VoucherService.java @@ -4,7 +4,7 @@ import com.wonu606.vouchermanager.domain.voucher.VoucherResultSet; import com.wonu606.vouchermanager.repository.voucher.VoucherRepository; import com.wonu606.vouchermanager.service.voucher.factory.VoucherFactory; -import com.wonu606.vouchermanager.service.voucher.param.OwnedCustomersParam; +import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedCustomersParam; import com.wonu606.vouchermanager.service.voucher.param.VoucherCreateParam; import com.wonu606.vouchermanager.service.voucherwallet.VoucherWalletService; import com.wonu606.vouchermanager.service.voucherwallet.param.WalletAssignParam; diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/factory/VoucherFactory.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/factory/VoucherFactory.java index 226f3ab0a5..08d3e43352 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/factory/VoucherFactory.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/factory/VoucherFactory.java @@ -7,7 +7,6 @@ import com.wonu606.vouchermanager.domain.voucher.discountvalue.FixedAmountValue; import com.wonu606.vouchermanager.domain.voucher.discountvalue.PercentageDiscountValue; import com.wonu606.vouchermanager.service.util.UUIDGenerator; -import com.wonu606.vouchermanager.service.voucher.VoucherType; import org.springframework.stereotype.Component; @Component diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/VoucherType.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/factory/VoucherType.java similarity index 91% rename from voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/VoucherType.java rename to voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/factory/VoucherType.java index 66d7d4364c..a82b40dbe4 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/VoucherType.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/factory/VoucherType.java @@ -1,4 +1,4 @@ -package com.wonu606.vouchermanager.service.voucher; +package com.wonu606.vouchermanager.service.voucher.factory; import java.util.Arrays; import java.util.List; diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/VoucherWalletService.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/VoucherWalletService.java index e497ba4d57..0eccdc02a8 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/VoucherWalletService.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/VoucherWalletService.java @@ -1,11 +1,10 @@ package com.wonu606.vouchermanager.service.voucherwallet; -import com.wonu606.vouchermanager.domain.voucherwallet.VoucherWallet; -import com.wonu606.vouchermanager.domain.voucherwallet.VoucherWalletDto; -import com.wonu606.vouchermanager.domain.customer.email.Email; import com.wonu606.vouchermanager.repository.voucherwallet.VoucherWalletRepository; -import java.util.List; -import java.util.UUID; +import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedCustomersParam; +import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedVoucherParam; +import com.wonu606.vouchermanager.service.voucherwallet.param.WalletAssignParam; +import com.wonu606.vouchermanager.service.voucherwallet.param.WalletDeleteParam; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; @@ -15,26 +14,44 @@ public class VoucherWalletService { private final VoucherWalletRepository voucherWalletRepository; - public VoucherWalletService( - VoucherWalletRepository voucherWalletRepository) { + private final OwnedVoucherQueryConverter ownedVoucherQueryConverter; + private final OwnedVoucherResultConverter ownedVoucherResultConverter; + private final WalletAssignQueryConverter walletAssignQueryConverter; + private final WalletDeleteByCustomerQueryConverter walletDeleteQueryConverter; + private final WalletAssignQueryConverter walletAssignQueryConverter; + private final WalletAssignResultConverter walletAssignResultConverter; + private final OwnedCustomersQueryConverter ownedCustomersQueryConverter; + private final OwnedCustomersResultConverter ownedCustomersResultConverter; + + public VoucherWalletService(VoucherWalletRepository voucherWalletRepository) { this.voucherWalletRepository = voucherWalletRepository; } - public List findOwnedVouchersByCustomer(Email email) { - return voucherWalletRepository.findIdByCustomerEmailAddress(email); + public OwnedVouchersResult findOwnedVouchersByCustomer(OwnedVoucherParam param) { + OwnedVoucherQuery query = ownedVoucherQueryConverter.convert(param); + OwnedVoucherResultSet resultSet = + voucherWalletRepository.findOwnedVouchersByCustomer(query); + + return ownedVoucherResultConverter.convert(resultSet); } - public void deleteByWallet(VoucherWalletDto voucherWalletDto) { - VoucherWallet voucherWallet = voucherWalletDto.toEntity(); - voucherWalletRepository.deleteByWallet(voucherWallet); + public void deleteWallet(WalletDeleteParam param) { + WalletDeleteQuery query = walletDeleteQueryConverter.convert(param); + voucherWalletRepository.delete(query); } - public VoucherWallet save(VoucherWalletDto voucherWalletDto) { - VoucherWallet voucherWallet = voucherWalletDto.toEntity(); - return voucherWalletRepository.save(voucherWallet); + public WalletAssignResult assignWallet(WalletAssignParam param) { + WalletAssignQuery query = walletAssignQueryConverter.convert(param); + + WalletAssignResultSet resultSet = voucherWalletRepository.save(query); + return walletAssignResultConverter.convert(resultSet); } - public List findEmailAddressesByVoucherId(UUID voucherId) { - return voucherWalletRepository.findEmailAddressesByVoucherId(voucherId); + public OwnedCustomersResult findOwnedCustomersByVoucher(OwnedCustomersParam param) { + OwnedCustomersQuery query = ownedCustomersQueryConverter.convert(param); + OwnedCustomersResultSet resultSet = + voucherWalletRepository.findOwnedCustomerByVoucher(query); + + return ownedCustomersResultConverter.convert(resultSet); } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/param/OwnedCustomersParam.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/param/OwnedCustomersParam.java similarity index 80% rename from voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/param/OwnedCustomersParam.java rename to voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/param/OwnedCustomersParam.java index d2845f20b5..40c580e9c7 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/param/OwnedCustomersParam.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/param/OwnedCustomersParam.java @@ -1,4 +1,4 @@ -package com.wonu606.vouchermanager.service.voucher.param; +package com.wonu606.vouchermanager.service.voucherwallet.param; import java.util.UUID; diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/param/OwnedVoucherParam.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/param/OwnedVoucherParam.java similarity index 78% rename from voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/param/OwnedVoucherParam.java rename to voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/param/OwnedVoucherParam.java index 3a2e645b6d..258a0ab44b 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/param/OwnedVoucherParam.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/param/OwnedVoucherParam.java @@ -1,4 +1,4 @@ -package com.wonu606.vouchermanager.service.customer.param; +package com.wonu606.vouchermanager.service.voucherwallet.param; import java.util.UUID; diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/param/WalletAssignParam.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/param/WalletAssignParam.java index 3466f16034..4f9d6e8cdf 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/param/WalletAssignParam.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/param/WalletAssignParam.java @@ -1,5 +1,28 @@ package com.wonu606.vouchermanager.service.voucherwallet.param; +import com.wonu606.vouchermanager.domain.customer.email.Email; +import com.wonu606.vouchermanager.domain.voucherwallet.VoucherWallet; +import java.util.UUID; + public class WalletAssignParam { + private final UUID voucherId; + private final String emailAddress; + + public WalletAssignParam(UUID voucherId, String emailAddress) { + this.voucherId = voucherId; + this.emailAddress = emailAddress; + } + + public UUID getVoucherId() { + return voucherId; + } + + public String getEmailAddress() { + return emailAddress; + } + + public VoucherWallet toEntity() { + return new VoucherWallet(getVoucherId(), new Email(getEmailAddress())); + } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/param/WalletDeleteParam.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/param/WalletDeleteParam.java similarity index 87% rename from voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/param/WalletDeleteParam.java rename to voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/param/WalletDeleteParam.java index c03073b952..2cb5c76750 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/param/WalletDeleteParam.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/param/WalletDeleteParam.java @@ -1,4 +1,4 @@ -package com.wonu606.vouchermanager.service.customer.param; +package com.wonu606.vouchermanager.service.voucherwallet.param; import java.util.UUID; diff --git a/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucherwallet/JdbcVoucherWalletRepositoryTest.java b/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucherwallet/JdbcVoucherWalletRepositoryTest.java index 9fd10fd0d2..e3f3f1afb9 100644 --- a/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucherwallet/JdbcVoucherWalletRepositoryTest.java +++ b/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucherwallet/JdbcVoucherWalletRepositoryTest.java @@ -67,7 +67,7 @@ void findVoucherIdByCustomerEmailAddress_SavedEmailAddress_ReturnsVoucherIds( // when List actualUuids = - customerVoucherWalletRepository.findIdByCustomerEmailAddress(email); + customerVoucherWalletRepository.findOwnedVouchersByCustomer(email); // then assertThat(actualUuids).hasSize(1); @@ -85,11 +85,11 @@ void deleteByCustomerVoucherWallet_SavedWallet_Deleted(Customer customer, Vouche new Email(customer.getEmailAddress())); // when - customerVoucherWalletRepository.deleteByWallet(voucherWallet); + customerVoucherWalletRepository.delete(voucherWallet); // then List emailAddresses = - customerVoucherWalletRepository.findEmailAddressesByVoucherId(voucher.getUuid()); + customerVoucherWalletRepository.findOwnedCustomerByVoucher(voucher.getUuid()); assertThat(emailAddresses).hasSize(0); } @@ -103,7 +103,7 @@ void findEmailAddressesByVoucherId_SavedVoucherId_ReturnsEmailAddresses( // when List emailAddresses = - customerVoucherWalletRepository.findEmailAddressesByVoucherId(voucherId); + customerVoucherWalletRepository.findOwnedCustomerByVoucher(voucherId); // then assertThat(emailAddresses).hasSize(1); From fdd9bc2ecc454e6c229b0650f6dc44f1a804b218 Mon Sep 17 00:00:00 2001 From: wonu606 Date: Wed, 19 Jul 2023 03:00:02 +0900 Subject: [PATCH 09/37] =?UTF-8?q?refactor:=20WalletRepository=20=EC=9D=98?= =?UTF-8?q?=EC=A1=B4=EC=84=B1=20=EC=A0=9C=EA=B1=B0=20=EB=B0=8F=20DTO=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/customer/email/EmailDto.java | 13 --- .../domain/voucherwallet/VoucherWallet.java | 14 +-- .../JdbcVoucherWalletRepository.java | 86 ++++++++++++------- .../VoucherWalletRepository.java | 22 +++-- .../query/OwnedCustomersQuery.java | 14 +++ .../query/OwnedVouchersQuery.java | 14 +++ .../query/WalletDeleteQuery.java | 20 +++++ .../query/WalletInsertQuery.java | 14 +++ .../query/WalletUpdateQuery.java | 20 +++++ .../resultset/OwnedCustomerResultSet.java | 14 +++ .../resultset/OwnedVoucherResultSet.java | 14 +++ .../resultset/WalletInsertResultSet.java | 14 +++ .../resultset/WalletUpdateResultSet.java | 13 +++ .../OwnedCustomerResultSetSetRowMapper.java | 14 +++ .../OwnedVoucherResultSetSetRowMapper.java | 14 +++ .../voucherwallet/VoucherWalletService.java | 14 +-- .../param/WalletAssignParam.java | 12 +-- .../JdbcVoucherWalletRepositoryTest.java | 4 +- 18 files changed, 258 insertions(+), 72 deletions(-) delete mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/customer/email/EmailDto.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/query/OwnedCustomersQuery.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/query/OwnedVouchersQuery.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/query/WalletDeleteQuery.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/query/WalletInsertQuery.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/query/WalletUpdateQuery.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/resultset/OwnedCustomerResultSet.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/resultset/OwnedVoucherResultSet.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/resultset/WalletInsertResultSet.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/resultset/WalletUpdateResultSet.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/rowmapper/OwnedCustomerResultSetSetRowMapper.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/rowmapper/OwnedVoucherResultSetSetRowMapper.java diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/customer/email/EmailDto.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/customer/email/EmailDto.java deleted file mode 100644 index db4cb9754d..0000000000 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/customer/email/EmailDto.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.wonu606.vouchermanager.domain.customer.email; - -public class EmailDto { - String emailAddress; - - public EmailDto(String emailAddress) { - this.emailAddress = emailAddress; - } - - public String getEmailAddress() { - return emailAddress; - } -} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/voucherwallet/VoucherWallet.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/voucherwallet/VoucherWallet.java index 7d665e1227..e7ca5d7bd5 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/voucherwallet/VoucherWallet.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/voucherwallet/VoucherWallet.java @@ -6,16 +6,16 @@ public class VoucherWallet { - private final UUID voucherId; + private final UUID voucherUuid; private final Email email; - public VoucherWallet(UUID voucherId, Email email) { - this.voucherId = voucherId; + public VoucherWallet(UUID voucherUuid, Email email) { + this.voucherUuid = voucherUuid; this.email = email; } - public UUID getVoucherId() { - return voucherId; + public UUID getVoucherUuid() { + return voucherUuid; } public String getEmailAddress() { @@ -31,12 +31,12 @@ public boolean equals(Object o) { return false; } VoucherWallet that = (VoucherWallet) o; - return Objects.equals(getVoucherId(), that.getVoucherId()) + return Objects.equals(getVoucherUuid(), that.getVoucherUuid()) && Objects.equals(getEmailAddress(), that.getEmailAddress()); } @Override public int hashCode() { - return Objects.hash(getVoucherId(), getEmailAddress()); + return Objects.hash(getVoucherUuid(), getEmailAddress()); } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/JdbcVoucherWalletRepository.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/JdbcVoucherWalletRepository.java index 514f9fdbae..c7868e5a17 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/JdbcVoucherWalletRepository.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/JdbcVoucherWalletRepository.java @@ -1,56 +1,82 @@ package com.wonu606.vouchermanager.repository.voucherwallet; -import com.wonu606.vouchermanager.domain.voucherwallet.VoucherWallet; -import com.wonu606.vouchermanager.domain.customer.email.Email; +import com.wonu606.vouchermanager.repository.voucherwallet.query.OwnedCustomersQuery; +import com.wonu606.vouchermanager.repository.voucherwallet.query.OwnedVouchersQuery; +import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletDeleteQuery; +import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletInsertQuery; +import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletUpdateQuery; +import com.wonu606.vouchermanager.repository.voucherwallet.resultset.OwnedCustomerResultSet; +import com.wonu606.vouchermanager.repository.voucherwallet.resultset.OwnedVoucherResultSet; +import com.wonu606.vouchermanager.repository.voucherwallet.resultset.WalletInsertResultSet; +import com.wonu606.vouchermanager.repository.voucherwallet.resultset.WalletUpdateResultSet; +import com.wonu606.vouchermanager.repository.voucherwallet.rowmapper.OwnedCustomerResultSetSetRowMapper; +import com.wonu606.vouchermanager.repository.voucherwallet.rowmapper.OwnedVoucherResultSetSetRowMapper; +import java.util.HashMap; import java.util.List; -import java.util.UUID; +import java.util.Map; import javax.sql.DataSource; -import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; import org.springframework.stereotype.Component; @Component public class JdbcVoucherWalletRepository implements VoucherWalletRepository { - private final JdbcTemplate jdbcTemplate; + private final NamedParameterJdbcTemplate jdbcTemplate; + + private final OwnedVoucherResultSetSetRowMapper ownedVoucherResultSetSetRowMapper; + private final OwnedCustomerResultSetSetRowMapper ownedCustomerResultSetSetRowMapper; + public JdbcVoucherWalletRepository(DataSource dataSource) { - this.jdbcTemplate = new JdbcTemplate(dataSource); + this.jdbcTemplate = new NamedParameterJdbcTemplate(dataSource); + + ownedVoucherResultSetSetRowMapper = new OwnedVoucherResultSetSetRowMapper(); + ownedCustomerResultSetSetRowMapper = new OwnedCustomerResultSetSetRowMapper(); } @Override - public List findOwnedVouchersByCustomer(Email email) { - String selectSql = "SELECT voucher_id FROM customer_voucher_wallet WHERE customer_email_address = ?"; - return jdbcTemplate.query(selectSql, - (rs, rowNum) -> UUID.fromString(rs.getString("voucher_id")), - email.getAddress()); + public List findOwnedVouchersByCustomer(OwnedVouchersQuery query) { + String selectionSql = "SELECT voucher_id FROM voucher_wallet WHERE customer_id = :customer_id"; + Map params = new HashMap<>(); + params.put("customer_id", query.getCustomerId()); + + return jdbcTemplate.query(selectionSql, params, ownedVoucherResultSetSetRowMapper); } @Override - public void delete(VoucherWallet wallet) { - String deleteSql = "DELETE FROM customer_voucher_wallet WHERE customer_email_address = ? AND voucher_id = ?"; - jdbcTemplate.update(deleteSql, - wallet.getEmailAddress(), - wallet.getVoucherId().toString()); + public void delete(WalletDeleteQuery query) { + String deletionSql = "DELETE FROM voucher_wallet WHERE customer_id = :customer_id AND voucher_id = :voucher_id"; + Map params = new HashMap<>(); + params.put("customer_id", query.getCustomerId()); + params.put("voucher_id", query.getVoucherId()); + + jdbcTemplate.update(deletionSql, params); } - @Override - public VoucherWallet save(VoucherWallet wallet) { - insert(wallet); - return wallet; + public WalletInsertResultSet insert(WalletInsertQuery query) { + String insertionSql = "INSERT INTO voucher_wallet (voucher_id, customer_id) VALUES (:voucher_id, NULL)"; + Map params = new HashMap<>(); + params.put("voucher_id", query.getVoucherId()); + + int resultSet = jdbcTemplate.update(insertionSql, params); + return new WalletInsertResultSet(resultSet); } @Override - public List findOwnedCustomerByVoucher(UUID voucherId) { - String selectSql = "SELECT customer_email_address FROM customer_voucher_wallet WHERE voucher_id = ?"; - return jdbcTemplate.query(selectSql, - (rs, rowNum) -> rs.getString("customer_email_address"), - voucherId.toString()); + public List findOwnedCustomersByVoucher(OwnedCustomersQuery query) { + String selectionSql = "SELECT customer_id FROM voucher_wallet WHERE voucher_id = :voucher_id"; + Map params = new HashMap<>(); + params.put("voucher_id", query.getVoucherId()); + + return jdbcTemplate.query(selectionSql, ownedCustomerResultSetSetRowMapper); } - private void insert(VoucherWallet wallet) { - String insertSql = "INSERT INTO customer_voucher_wallet (customer_email_address, voucher_id) VALUES (?, ?)"; - jdbcTemplate.update(insertSql, - wallet.getEmailAddress(), - wallet.getVoucherId().toString()); + public WalletUpdateResultSet update(WalletUpdateQuery query) { + String insertSql = "INSERT INTO voucher_wallet (customer_id, voucher_id) VALUES (:customer_id, :voucher_id)"; + Map params = new HashMap<>(); + params.put("customer_id", query.getCustomerId()); + params.put("voucher_id", query.getVoucherId()); + + return new WalletUpdateResultSet(jdbcTemplate.update(insertSql, params)); } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/VoucherWalletRepository.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/VoucherWalletRepository.java index 099107b364..b00d9cd484 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/VoucherWalletRepository.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/VoucherWalletRepository.java @@ -1,17 +1,25 @@ package com.wonu606.vouchermanager.repository.voucherwallet; -import com.wonu606.vouchermanager.domain.voucherwallet.VoucherWallet; -import com.wonu606.vouchermanager.domain.customer.email.Email; +import com.wonu606.vouchermanager.repository.voucherwallet.query.OwnedCustomersQuery; +import com.wonu606.vouchermanager.repository.voucherwallet.query.OwnedVouchersQuery; +import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletDeleteQuery; +import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletInsertQuery; +import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletUpdateQuery; +import com.wonu606.vouchermanager.repository.voucherwallet.resultset.OwnedCustomerResultSet; +import com.wonu606.vouchermanager.repository.voucherwallet.resultset.OwnedVoucherResultSet; +import com.wonu606.vouchermanager.repository.voucherwallet.resultset.WalletInsertResultSet; +import com.wonu606.vouchermanager.repository.voucherwallet.resultset.WalletUpdateResultSet; import java.util.List; -import java.util.UUID; public interface VoucherWalletRepository { - List findOwnedVouchersByCustomer(Email email); + List findOwnedVouchersByCustomer(OwnedVouchersQuery query); - void delete(VoucherWallet voucherWallet); + void delete(WalletDeleteQuery query); - VoucherWallet save(VoucherWallet voucherWallet); + List findOwnedCustomersByVoucher(OwnedCustomersQuery query); - List findOwnedCustomerByVoucher(UUID voucherId); + WalletInsertResultSet insert(WalletInsertQuery wallet); + + WalletUpdateResultSet update(WalletUpdateQuery wallet); } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/query/OwnedCustomersQuery.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/query/OwnedCustomersQuery.java new file mode 100644 index 0000000000..ac46914e24 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/query/OwnedCustomersQuery.java @@ -0,0 +1,14 @@ +package com.wonu606.vouchermanager.repository.voucherwallet.query; + +public class OwnedCustomersQuery { + + private final String voucherId; + + public OwnedCustomersQuery(String voucherId) { + this.voucherId = voucherId; + } + + public String getVoucherId() { + return voucherId; + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/query/OwnedVouchersQuery.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/query/OwnedVouchersQuery.java new file mode 100644 index 0000000000..856e8a591a --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/query/OwnedVouchersQuery.java @@ -0,0 +1,14 @@ +package com.wonu606.vouchermanager.repository.voucherwallet.query; + +public class OwnedVouchersQuery { + + private final String customerId; + + public OwnedVouchersQuery(String customerId) { + this.customerId = customerId; + } + + public String getCustomerId() { + return customerId; + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/query/WalletDeleteQuery.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/query/WalletDeleteQuery.java new file mode 100644 index 0000000000..48c0a33575 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/query/WalletDeleteQuery.java @@ -0,0 +1,20 @@ +package com.wonu606.vouchermanager.repository.voucherwallet.query; + +public class WalletDeleteQuery { + + private final String customerId; + private final String voucherId; + + public WalletDeleteQuery(String customerId, String voucherId) { + this.customerId = customerId; + this.voucherId = voucherId; + } + + public String getCustomerId() { + return customerId; + } + + public String getVoucherId() { + return voucherId; + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/query/WalletInsertQuery.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/query/WalletInsertQuery.java new file mode 100644 index 0000000000..6ce2eee446 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/query/WalletInsertQuery.java @@ -0,0 +1,14 @@ +package com.wonu606.vouchermanager.repository.voucherwallet.query; + +public class WalletInsertQuery { + + private final String voucherId; + + public WalletInsertQuery(String voucherId) { + this.voucherId = voucherId; + } + + public String getVoucherId() { + return voucherId; + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/query/WalletUpdateQuery.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/query/WalletUpdateQuery.java new file mode 100644 index 0000000000..21bc35db38 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/query/WalletUpdateQuery.java @@ -0,0 +1,20 @@ +package com.wonu606.vouchermanager.repository.voucherwallet.query; + +public class WalletUpdateQuery { + + private String customerId; + private String voucherId; + + public WalletUpdateQuery(String customerId, String voucherId) { + this.customerId = customerId; + this.voucherId = voucherId; + } + + public String getCustomerId() { + return customerId; + } + + public String getVoucherId() { + return voucherId; + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/resultset/OwnedCustomerResultSet.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/resultset/OwnedCustomerResultSet.java new file mode 100644 index 0000000000..6d1f3a7be7 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/resultset/OwnedCustomerResultSet.java @@ -0,0 +1,14 @@ +package com.wonu606.vouchermanager.repository.voucherwallet.resultset; + +public class OwnedCustomerResultSet { + + private final String customerId; + + public OwnedCustomerResultSet(String customerId) { + this.customerId = customerId; + } + + public String getCustomerId() { + return customerId; + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/resultset/OwnedVoucherResultSet.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/resultset/OwnedVoucherResultSet.java new file mode 100644 index 0000000000..7fbce7d7c2 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/resultset/OwnedVoucherResultSet.java @@ -0,0 +1,14 @@ +package com.wonu606.vouchermanager.repository.voucherwallet.resultset; + +public class OwnedVoucherResultSet { + + private final String voucherId; + + public OwnedVoucherResultSet(String voucherId) { + this.voucherId = voucherId; + } + + public String getVoucherId() { + return voucherId; + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/resultset/WalletInsertResultSet.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/resultset/WalletInsertResultSet.java new file mode 100644 index 0000000000..b3ae0452db --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/resultset/WalletInsertResultSet.java @@ -0,0 +1,14 @@ +package com.wonu606.vouchermanager.repository.voucherwallet.resultset; + +public class WalletInsertResultSet { + + private final Integer affectedRowsCount; + + public WalletInsertResultSet(Integer affectedRowsCount) { + this.affectedRowsCount = affectedRowsCount; + } + + public Integer getAffectedRowsCount() { + return affectedRowsCount; + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/resultset/WalletUpdateResultSet.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/resultset/WalletUpdateResultSet.java new file mode 100644 index 0000000000..b9804dc90e --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/resultset/WalletUpdateResultSet.java @@ -0,0 +1,13 @@ +package com.wonu606.vouchermanager.repository.voucherwallet.resultset; + +public class WalletUpdateResultSet { + private final Integer affectedRowsCount; + + public WalletUpdateResultSet(Integer affectedRowsCount) { + this.affectedRowsCount = affectedRowsCount; + } + + public Integer getAffectedRowsCount() { + return affectedRowsCount; + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/rowmapper/OwnedCustomerResultSetSetRowMapper.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/rowmapper/OwnedCustomerResultSetSetRowMapper.java new file mode 100644 index 0000000000..742b36d286 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/rowmapper/OwnedCustomerResultSetSetRowMapper.java @@ -0,0 +1,14 @@ +package com.wonu606.vouchermanager.repository.voucherwallet.rowmapper; + +import com.wonu606.vouchermanager.repository.voucherwallet.resultset.OwnedCustomerResultSet; +import java.sql.ResultSet; +import java.sql.SQLException; +import org.springframework.jdbc.core.RowMapper; + +public class OwnedCustomerResultSetSetRowMapper implements RowMapper { + + @Override + public OwnedCustomerResultSet mapRow(ResultSet rs, int rowNum) throws SQLException { + return new OwnedCustomerResultSet(rs.getString("customer_id")); + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/rowmapper/OwnedVoucherResultSetSetRowMapper.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/rowmapper/OwnedVoucherResultSetSetRowMapper.java new file mode 100644 index 0000000000..6511d5db8e --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/rowmapper/OwnedVoucherResultSetSetRowMapper.java @@ -0,0 +1,14 @@ +package com.wonu606.vouchermanager.repository.voucherwallet.rowmapper; + +import com.wonu606.vouchermanager.repository.voucherwallet.resultset.OwnedVoucherResultSet; +import java.sql.ResultSet; +import java.sql.SQLException; +import org.springframework.jdbc.core.RowMapper; + +public class OwnedVoucherResultSetSetRowMapper implements RowMapper { + + @Override + public OwnedVoucherResultSet mapRow(ResultSet rs, int rowNum) throws SQLException { + return new OwnedVoucherResultSet(rs.getString("voucher_id")); + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/VoucherWalletService.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/VoucherWalletService.java index 0eccdc02a8..f83d22d6a7 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/VoucherWalletService.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/VoucherWalletService.java @@ -16,10 +16,10 @@ public class VoucherWalletService { private final OwnedVoucherQueryConverter ownedVoucherQueryConverter; private final OwnedVoucherResultConverter ownedVoucherResultConverter; - private final WalletAssignQueryConverter walletAssignQueryConverter; + private final WalletAssignQueryConverter walletSaveQueryConverter; private final WalletDeleteByCustomerQueryConverter walletDeleteQueryConverter; private final WalletAssignQueryConverter walletAssignQueryConverter; - private final WalletAssignResultConverter walletAssignResultConverter; + private final WalletSaveResultConverter walletSaveResultConverter; private final OwnedCustomersQueryConverter ownedCustomersQueryConverter; private final OwnedCustomersResultConverter ownedCustomersResultConverter; @@ -40,17 +40,17 @@ public void deleteWallet(WalletDeleteParam param) { voucherWalletRepository.delete(query); } - public WalletAssignResult assignWallet(WalletAssignParam param) { - WalletAssignQuery query = walletAssignQueryConverter.convert(param); + public WalletSaveResultSet assignWallet(WalletAssignParam param) { + WalletSaveQuery query = walletSaveQueryConverter.convert(param); - WalletAssignResultSet resultSet = voucherWalletRepository.save(query); - return walletAssignResultConverter.convert(resultSet); + WalletSaveResultSet resultSet = voucherWalletRepository.save(query); + return walletSaveResultConverter.convert(resultSet); } public OwnedCustomersResult findOwnedCustomersByVoucher(OwnedCustomersParam param) { OwnedCustomersQuery query = ownedCustomersQueryConverter.convert(param); OwnedCustomersResultSet resultSet = - voucherWalletRepository.findOwnedCustomerByVoucher(query); + voucherWalletRepository.findOwnedCustomersByVoucher(query); return ownedCustomersResultConverter.convert(resultSet); } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/param/WalletAssignParam.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/param/WalletAssignParam.java index 4f9d6e8cdf..9d426e67a6 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/param/WalletAssignParam.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/param/WalletAssignParam.java @@ -7,22 +7,22 @@ public class WalletAssignParam { private final UUID voucherId; - private final String emailAddress; + private final String email; - public WalletAssignParam(UUID voucherId, String emailAddress) { + public WalletAssignParam(UUID voucherId, String email) { this.voucherId = voucherId; - this.emailAddress = emailAddress; + this.email = email; } public UUID getVoucherId() { return voucherId; } - public String getEmailAddress() { - return emailAddress; + public String getEmail() { + return email; } public VoucherWallet toEntity() { - return new VoucherWallet(getVoucherId(), new Email(getEmailAddress())); + return new VoucherWallet(getVoucherId(), new Email(getEmail())); } } diff --git a/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucherwallet/JdbcVoucherWalletRepositoryTest.java b/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucherwallet/JdbcVoucherWalletRepositoryTest.java index e3f3f1afb9..924d54db21 100644 --- a/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucherwallet/JdbcVoucherWalletRepositoryTest.java +++ b/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucherwallet/JdbcVoucherWalletRepositoryTest.java @@ -89,7 +89,7 @@ void deleteByCustomerVoucherWallet_SavedWallet_Deleted(Customer customer, Vouche // then List emailAddresses = - customerVoucherWalletRepository.findOwnedCustomerByVoucher(voucher.getUuid()); + customerVoucherWalletRepository.findOwnedCustomersByVoucher(voucher.getUuid()); assertThat(emailAddresses).hasSize(0); } @@ -103,7 +103,7 @@ void findEmailAddressesByVoucherId_SavedVoucherId_ReturnsEmailAddresses( // when List emailAddresses = - customerVoucherWalletRepository.findOwnedCustomerByVoucher(voucherId); + customerVoucherWalletRepository.findOwnedCustomersByVoucher(voucherId); // then assertThat(emailAddresses).hasSize(1); From 043ffff64200505bea827182a4f0c04875716b77 Mon Sep 17 00:00:00 2001 From: wonu606 Date: Wed, 19 Jul 2023 04:10:40 +0900 Subject: [PATCH 10/37] =?UTF-8?q?refactor:=20VoucherRepository=20=EC=9D=98?= =?UTF-8?q?=EC=A1=B4=EC=84=B1=20=EC=A0=9C=EA=B1=B0=20=EB=B0=8F=20DTO=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ltSet.java => VoucherCreateResultSet.java} | 4 +- .../JdbcVoucherResultSetRepository.java | 117 +++++------------- .../voucher/MappingVoucherRepository.java | 89 ------------- .../repository/voucher/VoucherRepository.java | 20 ++- .../voucher/VoucherResultSetRepository.java | 22 ---- .../voucher/query/VoucherDeleteQuery.java | 14 +++ .../voucher/query/VoucherFindQuery.java | 14 +++ .../voucher/query/VoucherInsertQuery.java | 27 ++++ .../resultset/VoucherInsertResultSet.java | 14 +++ .../voucher/resultset/VoucherResultSet.java | 26 ++++ .../rowmapper/VoucherResultSetRowMapper.java | 17 +++ .../service/voucher/VoucherService.java | 10 +- .../src/main/resources/application.properties | 8 +- ...ResultSetVoucherRepositoryTestCreate.java} | 14 +-- ...ava => WrappingVoucherRepositoryTest.java} | 22 ++-- 15 files changed, 182 insertions(+), 236 deletions(-) rename voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/voucher/{VoucherResultSet.java => VoucherCreateResultSet.java} (79%) delete mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/MappingVoucherRepository.java delete mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/VoucherResultSetRepository.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/query/VoucherDeleteQuery.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/query/VoucherFindQuery.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/query/VoucherInsertQuery.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/resultset/VoucherInsertResultSet.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/resultset/VoucherResultSet.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/rowmapper/VoucherResultSetRowMapper.java rename voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucher/{JdbcVoucherResultSetVoucherRepositoryTest.java => JdbcVoucherResultSetVoucherRepositoryTestCreate.java} (88%) rename voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucher/{MappingVoucherRepositoryTest.java => WrappingVoucherRepositoryTest.java} (85%) diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/voucher/VoucherResultSet.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/voucher/VoucherCreateResultSet.java similarity index 79% rename from voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/voucher/VoucherResultSet.java rename to voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/voucher/VoucherCreateResultSet.java index c666f16843..623889010b 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/voucher/VoucherResultSet.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/voucher/VoucherCreateResultSet.java @@ -2,13 +2,13 @@ import java.util.UUID; -public class VoucherResultSet { +public class VoucherCreateResultSet { private final UUID uuid; private final String simpleName; private final double discountValue; - public VoucherResultSet(UUID uuid, String simpleName, double discountValue) { + public VoucherCreateResultSet(UUID uuid, String simpleName, double discountValue) { this.uuid = uuid; this.simpleName = simpleName; this.discountValue = discountValue; diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/JdbcVoucherResultSetRepository.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/JdbcVoucherResultSetRepository.java index 3d2906bf29..b678d03a0d 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/JdbcVoucherResultSetRepository.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/JdbcVoucherResultSetRepository.java @@ -1,50 +1,54 @@ package com.wonu606.vouchermanager.repository.voucher; -import com.wonu606.vouchermanager.domain.voucher.Voucher; -import com.wonu606.vouchermanager.domain.voucher.VoucherResultSet; -import java.util.Collections; +import com.wonu606.vouchermanager.repository.voucher.query.VoucherDeleteQuery; +import com.wonu606.vouchermanager.repository.voucher.query.VoucherFindQuery; +import com.wonu606.vouchermanager.repository.voucher.query.VoucherInsertQuery; +import com.wonu606.vouchermanager.repository.voucher.resultset.VoucherInsertResultSet; +import com.wonu606.vouchermanager.repository.voucher.resultset.VoucherResultSet; +import com.wonu606.vouchermanager.repository.voucher.rowmapper.VoucherResultSetRowMapper; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Optional; -import java.util.UUID; -import java.util.stream.Collectors; import javax.sql.DataSource; import org.springframework.dao.EmptyResultDataAccessException; -import org.springframework.jdbc.core.RowMapper; -import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; import org.springframework.stereotype.Component; @Component -public class JdbcVoucherResultSetRepository implements VoucherResultSetRepository { +public class JdbcVoucherResultSetRepository implements VoucherRepository { private final NamedParameterJdbcTemplate namedParameterJdbcTemplate; + private final VoucherResultSetRowMapper voucherResultSetRowMapper; + public JdbcVoucherResultSetRepository(DataSource dataSource) { this.namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(dataSource); + + voucherResultSetRowMapper = new VoucherResultSetRowMapper(); } @Override - public Voucher save(Voucher voucher) { - if (isVoucherIdPresent(voucher)) { - updateVoucher(voucher); - } - insertVoucher(voucher); - return voucher; + public VoucherInsertResultSet insert(VoucherInsertQuery query) { + String insertionSql = "INSERT INTO voucher (voucher_id, voucher_type, discount_value) VALUES (:voucher_id, :voucher_type, :discount_value)"; + Map params = new HashMap<>(); + params.put("voucher_type", query.getVoucherClassSimpleName()); + params.put("voucher_id", query.getVoucherId()); + params.put("discount_value", query.getDiscountValue()); + + return new VoucherInsertResultSet(namedParameterJdbcTemplate.update(insertionSql, params)); } @Override - public Optional findById(UUID id) { - String selectSql = "SELECT * FROM voucher WHERE voucher_id = :voucher_id"; + public Optional findById(VoucherFindQuery query) { + String selectionSql = "SELECT voucher_type, voucher_id, discount_value FROM voucher WHERE voucher_id = :voucher_id"; Map params = new HashMap<>(); - params.put("voucher_id", id.toString()); + params.put("voucher_id", query.getVoucherId()); + try { - VoucherResultSet voucherResultSet = - namedParameterJdbcTemplate.queryForObject(selectSql, - params, - voucherResultSetRowMapper()); - return Optional.ofNullable(voucherResultSet); + VoucherResultSet resultSet = namedParameterJdbcTemplate.queryForObject(selectionSql, + params, voucherResultSetRowMapper); + return Optional.ofNullable(resultSet); } catch (EmptyResultDataAccessException e) { return Optional.empty(); } @@ -52,75 +56,16 @@ public Optional findById(UUID id) { @Override public List findAll() { - String selectSql = "SELECT * FROM voucher"; - return namedParameterJdbcTemplate.query(selectSql, voucherResultSetRowMapper()); + String selectSql = "SELECT voucher_type, voucher_id, discount_value FROM voucher"; + return namedParameterJdbcTemplate.query(selectSql, voucherResultSetRowMapper); } @Override - public void deleteById(UUID id) { + public void deleteById(VoucherDeleteQuery query) { String deleteSql = "DELETE FROM voucher WHERE voucher_id = :voucher_id"; Map params = new HashMap<>(); - params.put("voucher_id", id.toString()); - namedParameterJdbcTemplate.update(deleteSql, params); - } - - @Override - public void deleteAll() { - String deleteSql = "DELETE FROM voucher"; - namedParameterJdbcTemplate.update(deleteSql, new HashMap<>()); - } - - @Override - public List findAllByUuids(List uuidList) { - if (uuidList.isEmpty()) { - return Collections.emptyList(); - } - List uuidStringList = uuidList.stream().map(UUID::toString).collect(Collectors.toList()); - - String selectSql = "SELECT * FROM voucher WHERE voucher_id IN (:uuidList)"; - - MapSqlParameterSource parameters = new MapSqlParameterSource(); - parameters.addValue("uuidList", uuidStringList); - - return namedParameterJdbcTemplate.query(selectSql, parameters, voucherResultSetRowMapper()); - } - - private RowMapper voucherResultSetRowMapper() { - return (resultSet, rowNum) -> { - String voucherSimpleName = resultSet.getString("voucher_type"); - UUID uuid = UUID.fromString(resultSet.getString("voucher_id")); - double discountValue = resultSet.getDouble("discount_value"); - - return new VoucherResultSet(uuid, voucherSimpleName, discountValue); - }; - } - - private boolean isVoucherIdPresent(Voucher voucher) { - String selectSql = "SELECT count(*) FROM voucher WHERE voucher_id = :voucher_id"; - Map params = new HashMap<>(); - params.put("voucher_id", voucher.getUuid().toString()); - - Integer count = namedParameterJdbcTemplate.queryForObject(selectSql, params, Integer.class); - return count != null && count >= 0; - } - - private void updateVoucher(Voucher voucher) { - String updateSql = "UPDATE voucher SET voucher_type = :voucher_type, discount_value = :discount_value WHERE voucher_id = :voucher_id"; - Map params = new HashMap<>(); - params.put("voucher_type", voucher.getClass().getSimpleName()); - params.put("voucher_id", voucher.getUuid().toString()); - params.put("discount_value", voucher.getDiscountValue()); - - namedParameterJdbcTemplate.update(updateSql, params); - } - - private void insertVoucher(Voucher voucher) { - String insertSql = "INSERT INTO voucher (voucher_id, voucher_type, discount_value) VALUES (:voucher_id, :voucher_type, :discount_value)"; - Map params = new HashMap<>(); - params.put("voucher_type", voucher.getClass().getSimpleName()); - params.put("voucher_id", voucher.getUuid().toString()); - params.put("discount_value", voucher.getDiscountValue()); + params.put("voucher_id", query.getVoucherId()); - namedParameterJdbcTemplate.update(insertSql, params); + namedParameterJdbcTemplate.update(deleteSql, params); } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/MappingVoucherRepository.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/MappingVoucherRepository.java deleted file mode 100644 index ab9be409c0..0000000000 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/MappingVoucherRepository.java +++ /dev/null @@ -1,89 +0,0 @@ -package com.wonu606.vouchermanager.repository.voucher; - -import com.wonu606.vouchermanager.domain.voucher.FixedAmountVoucher; -import com.wonu606.vouchermanager.domain.voucher.PercentageVoucher; -import com.wonu606.vouchermanager.domain.voucher.Voucher; -import com.wonu606.vouchermanager.domain.voucher.VoucherResultSet; -import com.wonu606.vouchermanager.domain.voucher.discountvalue.FixedAmountValue; -import com.wonu606.vouchermanager.domain.voucher.discountvalue.PercentageDiscountValue; -import java.util.List; -import java.util.Optional; -import java.util.UUID; -import java.util.stream.Collectors; -import org.springframework.stereotype.Component; - -@Component -public class MappingVoucherRepository implements VoucherRepository { - - private final VoucherResultSetRepository voucherResultSetRepository; - - public MappingVoucherRepository(VoucherResultSetRepository voucherResultSetRepository) { - this.voucherResultSetRepository = voucherResultSetRepository; - } - - @Override - public Voucher save(Voucher voucher) { - return voucherResultSetRepository.save(voucher); - } - - @Override - public Optional findById(UUID id) { - return voucherResultSetRepository.findById(id) - .map(this::convertResultSetToEntity); - } - - @Override - public List findAll() { - return voucherResultSetRepository.findAll() - .stream().map(this::convertResultSetToEntity) - .collect(Collectors.toList()); - } - - @Override - public List findAllByUuIds(List uuidList) { - List voucherResultSetList = voucherResultSetRepository.findAllByUuids(uuidList); - return voucherResultSetList.stream() - .map(this::convertResultSetToEntity) - .collect(Collectors.toList()); - } - - @Override - public void deleteById(UUID id) { - voucherResultSetRepository.deleteById(id); - } - - @Override - public void deleteAll() { - voucherResultSetRepository.deleteAll(); - } - - private Voucher convertResultSetToEntity(VoucherResultSet voucherResultSet) { - String simpleName = voucherResultSet.getSimpleName(); - - if (isFixedAmountVoucher(simpleName)) { - return createFixedAmountVoucher(voucherResultSet); - } else if (isPercentageVoucher(simpleName)) { - return createPercentageVoucher(voucherResultSet); - } - throw new IllegalStateException("VoucherResult를 Voucher로 변환할 수 없습니다: " + simpleName); - } - - private boolean isFixedAmountVoucher(String simpleName) { - return FixedAmountVoucher.class.getSimpleName().equals(simpleName); - } - - private FixedAmountVoucher createFixedAmountVoucher(VoucherResultSet voucherResultSet) { - return new FixedAmountVoucher(voucherResultSet.getUuid(), - new FixedAmountValue(voucherResultSet.getDiscountValue())); - } - - private boolean isPercentageVoucher(String simpleName) { - return PercentageVoucher.class.getSimpleName().equals(simpleName); - } - - private PercentageVoucher createPercentageVoucher(VoucherResultSet voucherResultSet) { - return new PercentageVoucher(voucherResultSet.getUuid(), - new PercentageDiscountValue(voucherResultSet.getDiscountValue())); - } - -} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/VoucherRepository.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/VoucherRepository.java index a4bd08177d..1d5b79ba1c 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/VoucherRepository.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/VoucherRepository.java @@ -1,22 +1,20 @@ package com.wonu606.vouchermanager.repository.voucher; -import com.wonu606.vouchermanager.domain.voucher.Voucher; -import com.wonu606.vouchermanager.domain.voucher.VoucherResultSet; +import com.wonu606.vouchermanager.repository.voucher.query.VoucherDeleteQuery; +import com.wonu606.vouchermanager.repository.voucher.query.VoucherFindQuery; +import com.wonu606.vouchermanager.repository.voucher.query.VoucherInsertQuery; +import com.wonu606.vouchermanager.repository.voucher.resultset.VoucherInsertResultSet; +import com.wonu606.vouchermanager.repository.voucher.resultset.VoucherResultSet; import java.util.List; import java.util.Optional; -import java.util.UUID; public interface VoucherRepository { - VoucherResultSet save(VoucherQuery query); + VoucherInsertResultSet insert(VoucherInsertQuery query); - Optional findById(UUID uuid); + Optional findById(VoucherFindQuery query); - VoucherResultSets findAll(); + List findAll(); - VoucherResultSets findAllByUuIds(UUIDList uuidList); - - void deleteById(UUID uuid); - - void deleteAll(); + void deleteById(VoucherDeleteQuery query); } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/VoucherResultSetRepository.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/VoucherResultSetRepository.java deleted file mode 100644 index 649401d15d..0000000000 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/VoucherResultSetRepository.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.wonu606.vouchermanager.repository.voucher; - -import com.wonu606.vouchermanager.domain.voucher.Voucher; -import com.wonu606.vouchermanager.domain.voucher.VoucherResultSet; -import java.util.List; -import java.util.Optional; -import java.util.UUID; - -public interface VoucherResultSetRepository { - - Voucher save(Voucher voucher); - - Optional findById(UUID id); - - List findAll(); - - void deleteById(UUID id); - - void deleteAll(); - - List findAllByUuids(List uuidList); -} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/query/VoucherDeleteQuery.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/query/VoucherDeleteQuery.java new file mode 100644 index 0000000000..10a56b8fa9 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/query/VoucherDeleteQuery.java @@ -0,0 +1,14 @@ +package com.wonu606.vouchermanager.repository.voucher.query; + +public class VoucherDeleteQuery { + + private final String voucherId; + + public VoucherDeleteQuery(String voucherId) { + this.voucherId = voucherId; + } + + public String getVoucherId() { + return voucherId; + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/query/VoucherFindQuery.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/query/VoucherFindQuery.java new file mode 100644 index 0000000000..ca383c2874 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/query/VoucherFindQuery.java @@ -0,0 +1,14 @@ +package com.wonu606.vouchermanager.repository.voucher.query; + +public class VoucherFindQuery { + + private final String voucherId; + + public VoucherFindQuery(String voucherId) { + this.voucherId = voucherId; + } + + public String getVoucherId() { + return voucherId; + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/query/VoucherInsertQuery.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/query/VoucherInsertQuery.java new file mode 100644 index 0000000000..3800cbaa02 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/query/VoucherInsertQuery.java @@ -0,0 +1,27 @@ +package com.wonu606.vouchermanager.repository.voucher.query; + +public class VoucherInsertQuery { + + private final String voucherClassSimpleName; + private final String voucherId; + private final Double discountValue; + + public VoucherInsertQuery(String voucherClassSimpleName, String voucherId, + Double discountValue) { + this.voucherClassSimpleName = voucherClassSimpleName; + this.voucherId = voucherId; + this.discountValue = discountValue; + } + + public String getVoucherClassSimpleName() { + return voucherClassSimpleName; + } + + public String getVoucherId() { + return voucherId; + } + + public Double getDiscountValue() { + return discountValue; + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/resultset/VoucherInsertResultSet.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/resultset/VoucherInsertResultSet.java new file mode 100644 index 0000000000..806ecafb9c --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/resultset/VoucherInsertResultSet.java @@ -0,0 +1,14 @@ +package com.wonu606.vouchermanager.repository.voucher.resultset; + +public class VoucherInsertResultSet { + + private final Integer affectedRowsCount; + + public VoucherInsertResultSet(Integer affectedRowsCount) { + this.affectedRowsCount = affectedRowsCount; + } + + public Integer getAffectedRowsCount() { + return affectedRowsCount; + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/resultset/VoucherResultSet.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/resultset/VoucherResultSet.java new file mode 100644 index 0000000000..5c79a9bcf1 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/resultset/VoucherResultSet.java @@ -0,0 +1,26 @@ +package com.wonu606.vouchermanager.repository.voucher.resultset; + +public class VoucherResultSet { + + private final String simpleName; + private final String uuid; + private final Double discountValue; + + public VoucherResultSet(String simpleName, String uuid, Double discountValue) { + this.simpleName = simpleName; + this.uuid = uuid; + this.discountValue = discountValue; + } + + public String getSimpleName() { + return simpleName; + } + + public String getUuid() { + return uuid; + } + + public Double getDiscountValue() { + return discountValue; + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/rowmapper/VoucherResultSetRowMapper.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/rowmapper/VoucherResultSetRowMapper.java new file mode 100644 index 0000000000..8f8ee737ab --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/rowmapper/VoucherResultSetRowMapper.java @@ -0,0 +1,17 @@ +package com.wonu606.vouchermanager.repository.voucher.rowmapper; + +import com.wonu606.vouchermanager.repository.voucher.resultset.VoucherResultSet; +import java.sql.ResultSet; +import java.sql.SQLException; +import org.springframework.jdbc.core.RowMapper; + +public class VoucherResultSetRowMapper implements RowMapper { + + @Override + public VoucherResultSet mapRow(ResultSet rs, int rowNum) throws SQLException { + String voucherSimpleName = rs.getString("voucher_type"); + String uuid = rs.getString("voucher_id"); + double discountValue = rs.getDouble("discount_value"); + return new VoucherResultSet(voucherSimpleName, uuid, discountValue); + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/VoucherService.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/VoucherService.java index 3f444663e4..d2d965cce3 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/VoucherService.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/VoucherService.java @@ -1,13 +1,15 @@ package com.wonu606.vouchermanager.service.voucher; import com.wonu606.vouchermanager.domain.voucher.Voucher; -import com.wonu606.vouchermanager.domain.voucher.VoucherResultSet; +import com.wonu606.vouchermanager.domain.voucher.VoucherCreateResultSet; import com.wonu606.vouchermanager.repository.voucher.VoucherRepository; +import com.wonu606.vouchermanager.repository.voucher.query.VoucherInsertQuery; import com.wonu606.vouchermanager.service.voucher.factory.VoucherFactory; import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedCustomersParam; import com.wonu606.vouchermanager.service.voucher.param.VoucherCreateParam; import com.wonu606.vouchermanager.service.voucherwallet.VoucherWalletService; import com.wonu606.vouchermanager.service.voucherwallet.param.WalletAssignParam; +import java.util.List; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.dao.DuplicateKeyException; @@ -38,7 +40,7 @@ public VoucherCreateResult createVoucher(VoucherCreateParam param) { } public VoucherListResult getVoucherList() { - VoucherListResultSet resultSet = repository.findAll(); + List resultSet = repository.findAll(); return VoucherListResultConverter.convert(resultSet); } @@ -58,9 +60,9 @@ private VoucherCreateResult createVoucher(VoucherCreateParam voucherCreateParam, } Voucher voucher = factory.create(voucherCreateParam); - VoucherQuery query = voucherQueryConverter.convert(voucher); + VoucherInsertQuery query = VoucherCreateQueryConverter.convert(voucher); try { - VoucherResultSet resultSet = repository.save(query); + VoucherCreateResultSet resultSet = repository.save(query); } catch (DuplicateKeyException e) { log.info("DuplicateKeyException가 발생하였습니다. ", e); return createVoucher(voucherCreateParam, retryCount + 1); diff --git a/voucher-manager/src/main/resources/application.properties b/voucher-manager/src/main/resources/application.properties index 7b45edf02c..7256c72dbb 100644 --- a/voucher-manager/src/main/resources/application.properties +++ b/voucher-manager/src/main/resources/application.properties @@ -1,4 +1,4 @@ -#spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver -#spring.datasource.url=jdbc:mysql://localhost:3306/springboot_basic -#spring.datasource.username=root -#spring.datasource.password=1234 +spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver +spring.datasource.url=jdbc:mysql://localhost:3306/springboot_basic +spring.datasource.username=root +spring.datasource.password=1234 diff --git a/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucher/JdbcVoucherResultSetVoucherRepositoryTest.java b/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucher/JdbcVoucherResultSetVoucherRepositoryTestCreate.java similarity index 88% rename from voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucher/JdbcVoucherResultSetVoucherRepositoryTest.java rename to voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucher/JdbcVoucherResultSetVoucherRepositoryTestCreate.java index 3e4d63d8cb..52c7f8ef40 100644 --- a/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucher/JdbcVoucherResultSetVoucherRepositoryTest.java +++ b/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucher/JdbcVoucherResultSetVoucherRepositoryTestCreate.java @@ -5,7 +5,7 @@ import com.wonu606.vouchermanager.domain.voucher.FixedAmountVoucher; import com.wonu606.vouchermanager.domain.voucher.PercentageVoucher; import com.wonu606.vouchermanager.domain.voucher.Voucher; -import com.wonu606.vouchermanager.domain.voucher.VoucherResultSet; +import com.wonu606.vouchermanager.domain.voucher.VoucherCreateResultSet; import com.wonu606.vouchermanager.domain.voucher.discountvalue.FixedAmountValue; import com.wonu606.vouchermanager.domain.voucher.discountvalue.PercentageDiscountValue; import java.util.List; @@ -20,7 +20,7 @@ @JdbcTest @DisplayName("JdbcVoucherResultSetRepository 테스트") -class JdbcVoucherResultSetVoucherRepositoryTest { +class JdbcVoucherResultSetVoucherRepositoryTestCreate { private JdbcVoucherResultSetRepository jdbcVoucherResultSetRepository; @@ -59,7 +59,7 @@ void findById_savedVoucher_ReturnsVoucher() { jdbcVoucherResultSetRepository.save(voucher); // when - Optional foundVoucher = jdbcVoucherResultSetRepository.findById( + Optional foundVoucher = jdbcVoucherResultSetRepository.findById( voucher.getUuid()); // then @@ -74,7 +74,7 @@ void findById_UnsavedVoucher_ReturnsEmpty() { UUID nonExistentId = UUID.randomUUID(); // when - Optional foundVoucher = jdbcVoucherResultSetRepository.findById( + Optional foundVoucher = jdbcVoucherResultSetRepository.findById( nonExistentId); // then @@ -93,7 +93,7 @@ void findAll_SavedVouchers_ReturnsAllVouchers() { jdbcVoucherResultSetRepository.save(voucher2); // when - List allVouchers = jdbcVoucherResultSetRepository.findAll(); + List allVouchers = jdbcVoucherResultSetRepository.findAll(); // then assertThat(allVouchers).hasSize(2); @@ -110,7 +110,7 @@ void deleteById_SavedVoucher_VoucherDeleted() { // then jdbcVoucherResultSetRepository.deleteById(voucher.getUuid()); - Optional foundVoucher = jdbcVoucherResultSetRepository.findById( + Optional foundVoucher = jdbcVoucherResultSetRepository.findById( voucher.getUuid()); // when @@ -130,7 +130,7 @@ void deleteAll_SavedMultipleVouchers_AllVouchersDeleted() { // then jdbcVoucherResultSetRepository.deleteAll(); - List allVouchers = jdbcVoucherResultSetRepository.findAll(); + List allVouchers = jdbcVoucherResultSetRepository.findAll(); // when assertThat(allVouchers).isEmpty(); diff --git a/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucher/MappingVoucherRepositoryTest.java b/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucher/WrappingVoucherRepositoryTest.java similarity index 85% rename from voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucher/MappingVoucherRepositoryTest.java rename to voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucher/WrappingVoucherRepositoryTest.java index ea0d3cce85..92a238c963 100644 --- a/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucher/MappingVoucherRepositoryTest.java +++ b/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucher/WrappingVoucherRepositoryTest.java @@ -9,7 +9,7 @@ import com.wonu606.vouchermanager.domain.voucher.FixedAmountVoucher; import com.wonu606.vouchermanager.domain.voucher.PercentageVoucher; import com.wonu606.vouchermanager.domain.voucher.Voucher; -import com.wonu606.vouchermanager.domain.voucher.VoucherResultSet; +import com.wonu606.vouchermanager.domain.voucher.VoucherCreateResultSet; import com.wonu606.vouchermanager.domain.voucher.discountvalue.FixedAmountValue; import com.wonu606.vouchermanager.domain.voucher.discountvalue.PercentageDiscountValue; import java.util.ArrayList; @@ -25,16 +25,16 @@ import org.junit.jupiter.params.provider.MethodSource; @DisplayName("MappingVoucherRepository 테스트") -class MappingVoucherRepositoryTest { +class WrappingVoucherRepositoryTest { private VoucherResultSetRepository voucherResultSetRepository; - private MappingVoucherRepository voucherRepository; + private WrappingVoucherRepository voucherRepository; @BeforeEach void setUp() { voucherResultSetRepository = mock(VoucherResultSetRepository.class); - voucherRepository = new MappingVoucherRepository(voucherResultSetRepository); + voucherRepository = new WrappingVoucherRepository(voucherResultSetRepository); } @Test @@ -57,7 +57,7 @@ void findById_ExistingUuid_ReturnsExpectedVoucher() { FixedAmountVoucher expectedVoucher = new FixedAmountVoucher( UUID.randomUUID(), new FixedAmountValue(50.0) ); - VoucherResultSet enteredResultSet = new VoucherResultSet( + VoucherCreateResultSet enteredResultSet = new VoucherCreateResultSet( expectedVoucher.getUuid(), expectedVoucher.getClass().getSimpleName(), expectedVoucher.getDiscountValue() @@ -83,18 +83,18 @@ void findAll_EmptyArgument_SavedAllVoucher(Voucher expectedVoucher1, Voucher exp expectedVoucherList.add(expectedVoucher1); expectedVoucherList.add(expectedVoucher2); - VoucherResultSet expectedResultSet1 = new VoucherResultSet( + VoucherCreateResultSet expectedResultSet1 = new VoucherCreateResultSet( expectedVoucher1.getUuid(), expectedVoucher1.getClass().getSimpleName(), expectedVoucher1.getDiscountValue()); - VoucherResultSet expectedResultSet2 = new VoucherResultSet( + VoucherCreateResultSet expectedResultSet2 = new VoucherCreateResultSet( expectedVoucher2.getUuid(), expectedVoucher2.getClass().getSimpleName(), expectedVoucher2.getDiscountValue()); - List expectedVoucherResultSetList = new ArrayList<>(); - expectedVoucherResultSetList.add(expectedResultSet1); - expectedVoucherResultSetList.add(expectedResultSet2); + List expectedVoucherCreateResultSetList = new ArrayList<>(); + expectedVoucherCreateResultSetList.add(expectedResultSet1); + expectedVoucherCreateResultSetList.add(expectedResultSet2); - given(voucherResultSetRepository.findAll()).willReturn(expectedVoucherResultSetList); + given(voucherResultSetRepository.findAll()).willReturn(expectedVoucherCreateResultSetList); // then List actualVoucherList = voucherRepository.findAll(); From 07219aa73ea1f99902fdbc74cc953f70fc7f318b Mon Sep 17 00:00:00 2001 From: wonu606 Date: Wed, 19 Jul 2023 04:46:47 +0900 Subject: [PATCH 11/37] =?UTF-8?q?refactor:=20VOucherWallet=EC=97=90?= =?UTF-8?q?=EC=84=9C=20DTO=EC=9D=98=20Converters=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../voucherwallet/VoucherWalletService.java | 61 ++++++++++++++----- .../OwnedCustomersQueryConverter.java | 13 ++++ .../OwnedCustomersResultConverter.java | 13 ++++ .../converter/OwnedVoucherQueryConverter.java | 12 ++++ .../OwnedVoucherResultConverter.java | 12 ++++ .../converter/WalletDeleteQueryConverter.java | 13 ++++ .../converter/WalletInsertQueryConverter.java | 13 ++++ .../WalletInsertResultConverter.java | 13 ++++ .../param/OwnedVoucherParam.java | 10 ++- .../param/WalletAssignParam.java | 12 +--- .../result/OwnedCustomerResult.java | 14 +++++ .../result/OwnedVoucherResult.java | 14 +++++ .../result/WalletAssignResultSet.java | 14 +++++ 13 files changed, 182 insertions(+), 32 deletions(-) create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/OwnedCustomersQueryConverter.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/OwnedCustomersResultConverter.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/OwnedVoucherQueryConverter.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/OwnedVoucherResultConverter.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/WalletDeleteQueryConverter.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/WalletInsertQueryConverter.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/WalletInsertResultConverter.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/result/OwnedCustomerResult.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/result/OwnedVoucherResult.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/result/WalletAssignResultSet.java diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/VoucherWalletService.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/VoucherWalletService.java index f83d22d6a7..b56f19700d 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/VoucherWalletService.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/VoucherWalletService.java @@ -1,10 +1,29 @@ package com.wonu606.vouchermanager.service.voucherwallet; import com.wonu606.vouchermanager.repository.voucherwallet.VoucherWalletRepository; +import com.wonu606.vouchermanager.repository.voucherwallet.query.OwnedCustomersQuery; +import com.wonu606.vouchermanager.repository.voucherwallet.query.OwnedVouchersQuery; +import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletDeleteQuery; +import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletInsertQuery; +import com.wonu606.vouchermanager.repository.voucherwallet.resultset.OwnedCustomerResultSet; +import com.wonu606.vouchermanager.repository.voucherwallet.resultset.OwnedVoucherResultSet; +import com.wonu606.vouchermanager.repository.voucherwallet.resultset.WalletInsertResultSet; +import com.wonu606.vouchermanager.service.voucherwallet.converter.OwnedCustomersQueryConverter; +import com.wonu606.vouchermanager.service.voucherwallet.converter.OwnedCustomersResultConverter; +import com.wonu606.vouchermanager.service.voucherwallet.converter.OwnedVoucherQueryConverter; +import com.wonu606.vouchermanager.service.voucherwallet.converter.OwnedVoucherResultConverter; +import com.wonu606.vouchermanager.service.voucherwallet.converter.WalletDeleteQueryConverter; +import com.wonu606.vouchermanager.service.voucherwallet.converter.WalletInsertQueryConverter; +import com.wonu606.vouchermanager.service.voucherwallet.converter.WalletInsertResultConverter; import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedCustomersParam; import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedVoucherParam; import com.wonu606.vouchermanager.service.voucherwallet.param.WalletAssignParam; import com.wonu606.vouchermanager.service.voucherwallet.param.WalletDeleteParam; +import com.wonu606.vouchermanager.service.voucherwallet.result.OwnedCustomerResult; +import com.wonu606.vouchermanager.service.voucherwallet.result.OwnedVoucherResult; +import com.wonu606.vouchermanager.service.voucherwallet.result.WalletAssignResultSet; +import java.util.List; +import java.util.stream.Collectors; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; @@ -16,23 +35,33 @@ public class VoucherWalletService { private final OwnedVoucherQueryConverter ownedVoucherQueryConverter; private final OwnedVoucherResultConverter ownedVoucherResultConverter; - private final WalletAssignQueryConverter walletSaveQueryConverter; - private final WalletDeleteByCustomerQueryConverter walletDeleteQueryConverter; - private final WalletAssignQueryConverter walletAssignQueryConverter; - private final WalletSaveResultConverter walletSaveResultConverter; + private final WalletDeleteQueryConverter walletDeleteQueryConverter; + private final WalletInsertQueryConverter walletInsertQueryConverter; + private final WalletInsertResultConverter walletInsertResultConverter; + private final OwnedCustomersQueryConverter ownedCustomersQueryConverter; private final OwnedCustomersResultConverter ownedCustomersResultConverter; public VoucherWalletService(VoucherWalletRepository voucherWalletRepository) { this.voucherWalletRepository = voucherWalletRepository; + + ownedVoucherQueryConverter = new OwnedVoucherQueryConverter(); + ownedVoucherResultConverter = new OwnedVoucherResultConverter(); + walletDeleteQueryConverter = new WalletDeleteQueryConverter(); + walletInsertQueryConverter = new WalletInsertQueryConverter(); + walletInsertResultConverter = new WalletInsertResultConverter(); + ownedCustomersQueryConverter = new OwnedCustomersQueryConverter(); + ownedCustomersResultConverter = new OwnedCustomersResultConverter(); } - public OwnedVouchersResult findOwnedVouchersByCustomer(OwnedVoucherParam param) { - OwnedVoucherQuery query = ownedVoucherQueryConverter.convert(param); - OwnedVoucherResultSet resultSet = + public List findOwnedVouchersByCustomer(OwnedVoucherParam param) { + OwnedVouchersQuery query = ownedVoucherQueryConverter.convert(param); + List resultSets = voucherWalletRepository.findOwnedVouchersByCustomer(query); - return ownedVoucherResultConverter.convert(resultSet); + return resultSets.stream() + .map(ownedVoucherResultConverter::convert) + .collect(Collectors.toList()); } public void deleteWallet(WalletDeleteParam param) { @@ -40,18 +69,20 @@ public void deleteWallet(WalletDeleteParam param) { voucherWalletRepository.delete(query); } - public WalletSaveResultSet assignWallet(WalletAssignParam param) { - WalletSaveQuery query = walletSaveQueryConverter.convert(param); + public WalletAssignResultSet assignWallet(WalletAssignParam param) { + WalletInsertQuery query = walletInsertQueryConverter.convert(param); - WalletSaveResultSet resultSet = voucherWalletRepository.save(query); - return walletSaveResultConverter.convert(resultSet); + WalletInsertResultSet resultSet = voucherWalletRepository.insert(query); + return walletInsertResultConverter.convert(resultSet); } - public OwnedCustomersResult findOwnedCustomersByVoucher(OwnedCustomersParam param) { + public List findOwnedCustomersByVoucher(OwnedCustomersParam param) { OwnedCustomersQuery query = ownedCustomersQueryConverter.convert(param); - OwnedCustomersResultSet resultSet = + List resultSets = voucherWalletRepository.findOwnedCustomersByVoucher(query); - return ownedCustomersResultConverter.convert(resultSet); + return resultSets.stream() + .map(ownedCustomersResultConverter::convert) + .collect(Collectors.toList()); } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/OwnedCustomersQueryConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/OwnedCustomersQueryConverter.java new file mode 100644 index 0000000000..b41f750368 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/OwnedCustomersQueryConverter.java @@ -0,0 +1,13 @@ +package com.wonu606.vouchermanager.service.voucherwallet.converter; + +import com.wonu606.vouchermanager.repository.voucherwallet.query.OwnedCustomersQuery; +import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedCustomersParam; +import org.springframework.core.convert.converter.Converter; + +public class OwnedCustomersQueryConverter implements Converter { + + @Override + public OwnedCustomersQuery convert(OwnedCustomersParam param) { + return new OwnedCustomersQuery(param.getVoucherUuid().toString()); + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/OwnedCustomersResultConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/OwnedCustomersResultConverter.java new file mode 100644 index 0000000000..200497df70 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/OwnedCustomersResultConverter.java @@ -0,0 +1,13 @@ +package com.wonu606.vouchermanager.service.voucherwallet.converter; + +import com.wonu606.vouchermanager.repository.voucherwallet.resultset.OwnedCustomerResultSet; +import com.wonu606.vouchermanager.service.voucherwallet.result.OwnedCustomerResult; +import org.springframework.core.convert.converter.Converter; + +public class OwnedCustomersResultConverter implements Converter { + + @Override + public OwnedCustomerResult convert(OwnedCustomerResultSet param) { + return new OwnedCustomerResult(param.getCustomerId()); + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/OwnedVoucherQueryConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/OwnedVoucherQueryConverter.java new file mode 100644 index 0000000000..c960bc251e --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/OwnedVoucherQueryConverter.java @@ -0,0 +1,12 @@ +package com.wonu606.vouchermanager.service.voucherwallet.converter; + +import com.wonu606.vouchermanager.repository.voucherwallet.query.OwnedVouchersQuery; +import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedVoucherParam; +import org.springframework.core.convert.converter.Converter; + +public class OwnedVoucherQueryConverter implements Converter { + + public OwnedVouchersQuery convert(OwnedVoucherParam param) { + return new OwnedVouchersQuery(param.getEmail()); + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/OwnedVoucherResultConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/OwnedVoucherResultConverter.java new file mode 100644 index 0000000000..17961bde2c --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/OwnedVoucherResultConverter.java @@ -0,0 +1,12 @@ +package com.wonu606.vouchermanager.service.voucherwallet.converter; + +import com.wonu606.vouchermanager.repository.voucherwallet.resultset.OwnedVoucherResultSet; +import com.wonu606.vouchermanager.service.voucherwallet.result.OwnedVoucherResult; +import org.springframework.core.convert.converter.Converter; + +public class OwnedVoucherResultConverter implements Converter { + + public OwnedVoucherResult convert(OwnedVoucherResultSet resultSet) { + return new OwnedVoucherResult(resultSet.getVoucherId()); + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/WalletDeleteQueryConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/WalletDeleteQueryConverter.java new file mode 100644 index 0000000000..64898ecd66 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/WalletDeleteQueryConverter.java @@ -0,0 +1,13 @@ +package com.wonu606.vouchermanager.service.voucherwallet.converter; + +import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletDeleteQuery; +import com.wonu606.vouchermanager.service.voucherwallet.param.WalletDeleteParam; +import org.springframework.core.convert.converter.Converter; + +public class WalletDeleteQueryConverter implements Converter { + + @Override + public WalletDeleteQuery convert(WalletDeleteParam param) { + return new WalletDeleteQuery(param.getCustomerEmail(), param.getVoucherUuid().toString()); + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/WalletInsertQueryConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/WalletInsertQueryConverter.java new file mode 100644 index 0000000000..4f30cfd5ef --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/WalletInsertQueryConverter.java @@ -0,0 +1,13 @@ +package com.wonu606.vouchermanager.service.voucherwallet.converter; + +import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletInsertQuery; +import com.wonu606.vouchermanager.service.voucherwallet.param.WalletAssignParam; +import org.springframework.core.convert.converter.Converter; + +public class WalletInsertQueryConverter implements Converter { + + @Override + public WalletInsertQuery convert(WalletAssignParam param) { + return new WalletInsertQuery(param.getVoucherId().toString()); + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/WalletInsertResultConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/WalletInsertResultConverter.java new file mode 100644 index 0000000000..f1ffcac381 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/WalletInsertResultConverter.java @@ -0,0 +1,13 @@ +package com.wonu606.vouchermanager.service.voucherwallet.converter; + +import com.wonu606.vouchermanager.repository.voucherwallet.resultset.WalletInsertResultSet; +import com.wonu606.vouchermanager.service.voucherwallet.result.WalletAssignResultSet; +import org.springframework.core.convert.converter.Converter; + +public class WalletInsertResultConverter implements Converter { + + @Override + public WalletAssignResultSet convert(WalletInsertResultSet param) { + return new WalletAssignResultSet(param.getAffectedRowsCount() == 1); + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/param/OwnedVoucherParam.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/param/OwnedVoucherParam.java index 258a0ab44b..147fca4023 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/param/OwnedVoucherParam.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/param/OwnedVoucherParam.java @@ -1,16 +1,14 @@ package com.wonu606.vouchermanager.service.voucherwallet.param; -import java.util.UUID; +import com.wonu606.vouchermanager.domain.customer.email.Email; public class OwnedVoucherParam { - private final String email; + private final Email email; - public OwnedVoucherParam(String email) { + public OwnedVoucherParam(Email email) { this.email = email; } - public String getEmail() { - return email; - } + public String getEmail() {return email.getAddress();} } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/param/WalletAssignParam.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/param/WalletAssignParam.java index 9d426e67a6..682f7a925d 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/param/WalletAssignParam.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/param/WalletAssignParam.java @@ -7,22 +7,12 @@ public class WalletAssignParam { private final UUID voucherId; - private final String email; - public WalletAssignParam(UUID voucherId, String email) { + public WalletAssignParam(UUID voucherId) { this.voucherId = voucherId; - this.email = email; } public UUID getVoucherId() { return voucherId; } - - public String getEmail() { - return email; - } - - public VoucherWallet toEntity() { - return new VoucherWallet(getVoucherId(), new Email(getEmail())); - } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/result/OwnedCustomerResult.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/result/OwnedCustomerResult.java new file mode 100644 index 0000000000..5450e552e5 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/result/OwnedCustomerResult.java @@ -0,0 +1,14 @@ +package com.wonu606.vouchermanager.service.voucherwallet.result; + +public class OwnedCustomerResult { + + private final String customerEmail; + + public OwnedCustomerResult(String customerEmail) { + this.customerEmail = customerEmail; + } + + public String getCustomerEmail() { + return customerEmail; + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/result/OwnedVoucherResult.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/result/OwnedVoucherResult.java new file mode 100644 index 0000000000..64919a6ca8 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/result/OwnedVoucherResult.java @@ -0,0 +1,14 @@ +package com.wonu606.vouchermanager.service.voucherwallet.result; + +public class OwnedVoucherResult { + + private final String voucherUuid; + + public OwnedVoucherResult(String voucherUuid) { + this.voucherUuid = voucherUuid; + } + + public String getVoucherUuid() { + return voucherUuid; + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/result/WalletAssignResultSet.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/result/WalletAssignResultSet.java new file mode 100644 index 0000000000..53a3b25385 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/result/WalletAssignResultSet.java @@ -0,0 +1,14 @@ +package com.wonu606.vouchermanager.service.voucherwallet.result; + +public class WalletAssignResultSet { + + private final Boolean taskSuccess; + + public WalletAssignResultSet(Boolean taskSuccess) { + this.taskSuccess = taskSuccess; + } + + public Boolean getTaskSuccess() { + return taskSuccess; + } +} From 42ed6d56f6b89a1f574f06e10e172ad11bf65753 Mon Sep 17 00:00:00 2001 From: wonu606 Date: Wed, 19 Jul 2023 05:34:15 +0900 Subject: [PATCH 12/37] =?UTF-8?q?refactor:=20VoucherService=EC=97=90?= =?UTF-8?q?=EC=84=9C=20DTO=20Converters=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/customer/CustomerResultSet.java | 35 ----------------- .../voucherwallet/VoucherWalletResultSet.java | 21 ---------- .../customer/CustomerResultSetRepository.java | 2 +- .../JdbcCustomerResultSetRepository.java | 2 +- .../customer/MappingCustomerRepository.java | 2 +- .../customer/resultset/CustomerResultSet.java | 20 ++++++++++ ...sitory.java => VoucherJdbcRepository.java} | 4 +- .../resultset}/VoucherCreateResultSet.java | 8 ++-- .../service/voucher/VoucherService.java | 38 ++++++++++++++----- .../VoucherCreateQueryConverter.java | 14 +++++++ .../VoucherCreateResultConverter.java | 14 +++++++ .../converter/VoucherResultConverter.java | 14 +++++++ .../voucher/factory/VoucherFactory.java | 2 +- .../voucher/result/VoucherCreateResult.java | 14 +++++++ .../service/voucher/result/VoucherResult.java | 25 ++++++++++++ .../voucherwallet/VoucherWalletService.java | 4 +- .../WalletInsertResultConverter.java | 8 ++-- ...ResultSet.java => WalletAssignResult.java} | 4 +- .../JdbcCustomerResultSetRepositoryTest.java | 2 +- .../MappingCustomerRepositoryTest.java | 2 +- ...rResultSetVoucherRepositoryTestCreate.java | 36 +++++++++--------- .../WrappingVoucherRepositoryTest.java | 2 +- .../JdbcVoucherWalletRepositoryTest.java | 6 +-- 23 files changed, 171 insertions(+), 108 deletions(-) delete mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/customer/CustomerResultSet.java delete mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/voucherwallet/VoucherWalletResultSet.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/resultset/CustomerResultSet.java rename voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/{JdbcVoucherResultSetRepository.java => VoucherJdbcRepository.java} (95%) rename voucher-manager/src/main/java/com/wonu606/vouchermanager/{domain/voucher => repository/voucher/resultset}/VoucherCreateResultSet.java (73%) create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/converter/VoucherCreateQueryConverter.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/converter/VoucherCreateResultConverter.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/converter/VoucherResultConverter.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/result/VoucherCreateResult.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/result/VoucherResult.java rename voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/result/{WalletAssignResultSet.java => WalletAssignResult.java} (71%) diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/customer/CustomerResultSet.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/customer/CustomerResultSet.java deleted file mode 100644 index cc12e35655..0000000000 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/customer/CustomerResultSet.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.wonu606.vouchermanager.domain.customer; - -import java.time.LocalDateTime; - -public class CustomerResultSet { - - private final String emailAddress; - private final String nickname; - private final LocalDateTime lastUpdated; - private final LocalDateTime createdDate; - - public CustomerResultSet(String emailAddress, String nickname, LocalDateTime lastUpdated, - LocalDateTime createdDate) { - this.emailAddress = emailAddress; - this.nickname = nickname; - this.lastUpdated = lastUpdated; - this.createdDate = createdDate; - } - - public String getEmailAddress() { - return emailAddress; - } - - public String getNickname() { - return nickname; - } - - public LocalDateTime getLastUpdated() { - return lastUpdated; - } - - public LocalDateTime getCreatedDate() { - return createdDate; - } -} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/voucherwallet/VoucherWalletResultSet.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/voucherwallet/VoucherWalletResultSet.java deleted file mode 100644 index aab1855973..0000000000 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/voucherwallet/VoucherWalletResultSet.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.wonu606.vouchermanager.domain.voucherwallet; - -import java.util.UUID; - -public class VoucherWalletResultSet { - private final UUID voucherId; - private final String emailAddress; - - public VoucherWalletResultSet(UUID voucherId, String emailAddress) { - this.voucherId = voucherId; - this.emailAddress = emailAddress; - } - - public UUID getVoucherId() { - return voucherId; - } - - public String getEmailAddress() { - return emailAddress; - } -} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/CustomerResultSetRepository.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/CustomerResultSetRepository.java index 28ddd4b1ac..640479171c 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/CustomerResultSetRepository.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/CustomerResultSetRepository.java @@ -1,7 +1,7 @@ package com.wonu606.vouchermanager.repository.customer; import com.wonu606.vouchermanager.domain.customer.Customer; -import com.wonu606.vouchermanager.domain.customer.CustomerResultSet; +import com.wonu606.vouchermanager.repository.customer.resultset.CustomerResultSet; import com.wonu606.vouchermanager.domain.customer.email.Email; import java.util.List; import java.util.Optional; diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/JdbcCustomerResultSetRepository.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/JdbcCustomerResultSetRepository.java index a9350beaee..f894f1c81f 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/JdbcCustomerResultSetRepository.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/JdbcCustomerResultSetRepository.java @@ -1,7 +1,7 @@ package com.wonu606.vouchermanager.repository.customer; import com.wonu606.vouchermanager.domain.customer.Customer; -import com.wonu606.vouchermanager.domain.customer.CustomerResultSet; +import com.wonu606.vouchermanager.repository.customer.resultset.CustomerResultSet; import com.wonu606.vouchermanager.domain.customer.email.Email; import java.time.LocalDateTime; import java.util.Collections; diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/MappingCustomerRepository.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/MappingCustomerRepository.java index 1a34774cff..c954600fac 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/MappingCustomerRepository.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/MappingCustomerRepository.java @@ -1,7 +1,7 @@ package com.wonu606.vouchermanager.repository.customer; import com.wonu606.vouchermanager.domain.customer.Customer; -import com.wonu606.vouchermanager.domain.customer.CustomerResultSet; +import com.wonu606.vouchermanager.repository.customer.resultset.CustomerResultSet; import com.wonu606.vouchermanager.domain.customer.email.Email; import java.util.List; import java.util.Optional; diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/resultset/CustomerResultSet.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/resultset/CustomerResultSet.java new file mode 100644 index 0000000000..060488d901 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/resultset/CustomerResultSet.java @@ -0,0 +1,20 @@ +package com.wonu606.vouchermanager.repository.customer.resultset; + +public class CustomerResultSet { + + private final String emailAddress; + private final String nickname; + + public CustomerResultSet(String emailAddress, String nickname) { + this.emailAddress = emailAddress; + this.nickname = nickname; + } + + public String getEmailAddress() { + return emailAddress; + } + + public String getNickname() { + return nickname; + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/JdbcVoucherResultSetRepository.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/VoucherJdbcRepository.java similarity index 95% rename from voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/JdbcVoucherResultSetRepository.java rename to voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/VoucherJdbcRepository.java index b678d03a0d..0f98db9816 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/JdbcVoucherResultSetRepository.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/VoucherJdbcRepository.java @@ -16,13 +16,13 @@ import org.springframework.stereotype.Component; @Component -public class JdbcVoucherResultSetRepository implements VoucherRepository { +public class VoucherJdbcRepository implements VoucherRepository { private final NamedParameterJdbcTemplate namedParameterJdbcTemplate; private final VoucherResultSetRowMapper voucherResultSetRowMapper; - public JdbcVoucherResultSetRepository(DataSource dataSource) { + public VoucherJdbcRepository(DataSource dataSource) { this.namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(dataSource); voucherResultSetRowMapper = new VoucherResultSetRowMapper(); diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/voucher/VoucherCreateResultSet.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/resultset/VoucherCreateResultSet.java similarity index 73% rename from voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/voucher/VoucherCreateResultSet.java rename to voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/resultset/VoucherCreateResultSet.java index 623889010b..fa4dda2605 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/voucher/VoucherCreateResultSet.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/resultset/VoucherCreateResultSet.java @@ -1,4 +1,4 @@ -package com.wonu606.vouchermanager.domain.voucher; +package com.wonu606.vouchermanager.repository.voucher.resultset; import java.util.UUID; @@ -6,9 +6,9 @@ public class VoucherCreateResultSet { private final UUID uuid; private final String simpleName; - private final double discountValue; + private final Double discountValue; - public VoucherCreateResultSet(UUID uuid, String simpleName, double discountValue) { + public VoucherCreateResultSet(UUID uuid, String simpleName, Double discountValue) { this.uuid = uuid; this.simpleName = simpleName; this.discountValue = discountValue; @@ -22,7 +22,7 @@ public String getSimpleName() { return simpleName; } - public double getDiscountValue() { + public Double getDiscountValue() { return discountValue; } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/VoucherService.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/VoucherService.java index d2d965cce3..740ed46c28 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/VoucherService.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/VoucherService.java @@ -1,15 +1,24 @@ package com.wonu606.vouchermanager.service.voucher; import com.wonu606.vouchermanager.domain.voucher.Voucher; -import com.wonu606.vouchermanager.domain.voucher.VoucherCreateResultSet; import com.wonu606.vouchermanager.repository.voucher.VoucherRepository; import com.wonu606.vouchermanager.repository.voucher.query.VoucherInsertQuery; +import com.wonu606.vouchermanager.repository.voucher.resultset.VoucherInsertResultSet; +import com.wonu606.vouchermanager.repository.voucher.resultset.VoucherResultSet; +import com.wonu606.vouchermanager.service.voucher.converter.VoucherCreateQueryConverter; +import com.wonu606.vouchermanager.service.voucher.converter.VoucherCreateResultConverter; +import com.wonu606.vouchermanager.service.voucher.converter.VoucherResultConverter; import com.wonu606.vouchermanager.service.voucher.factory.VoucherFactory; -import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedCustomersParam; import com.wonu606.vouchermanager.service.voucher.param.VoucherCreateParam; +import com.wonu606.vouchermanager.service.voucher.result.VoucherCreateResult; +import com.wonu606.vouchermanager.service.voucher.result.VoucherResult; import com.wonu606.vouchermanager.service.voucherwallet.VoucherWalletService; +import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedCustomersParam; import com.wonu606.vouchermanager.service.voucherwallet.param.WalletAssignParam; +import com.wonu606.vouchermanager.service.voucherwallet.result.OwnedCustomerResult; +import com.wonu606.vouchermanager.service.voucherwallet.result.WalletAssignResult; import java.util.List; +import java.util.stream.Collectors; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.dao.DuplicateKeyException; @@ -24,27 +33,36 @@ public class VoucherService { private static final int MAX_RETRIES = 3; private final VoucherWalletService voucherWalletService; - private final VoucherRepository repository; private final VoucherFactory factory; + private final VoucherCreateQueryConverter voucherCreateQueryConverter; + private final VoucherCreateResultConverter voucherCreateResultConverter; + private final VoucherResultConverter voucherResultConverter; + public VoucherService(VoucherWalletService voucherWalletService, VoucherRepository repository, VoucherFactory factory) { this.voucherWalletService = voucherWalletService; this.repository = repository; this.factory = factory; + + voucherCreateQueryConverter = new VoucherCreateQueryConverter(); + voucherCreateResultConverter = new VoucherCreateResultConverter(); + voucherResultConverter = new VoucherResultConverter(); } public VoucherCreateResult createVoucher(VoucherCreateParam param) { return createVoucher(param, 0); } - public VoucherListResult getVoucherList() { - List resultSet = repository.findAll(); - return VoucherListResultConverter.convert(resultSet); + public List getVoucherList() { + List resultSets = repository.findAll(); + return resultSets.stream() + .map(voucherResultConverter::convert) + .collect(Collectors.toList()); } - public OwnedCustomersResult findOwnedCustomersByVoucher(OwnedCustomersParam param) { + public List findOwnedCustomersByVoucher(OwnedCustomersParam param) { return voucherWalletService.findOwnedCustomersByVoucher(param); } @@ -60,14 +78,14 @@ private VoucherCreateResult createVoucher(VoucherCreateParam voucherCreateParam, } Voucher voucher = factory.create(voucherCreateParam); - VoucherInsertQuery query = VoucherCreateQueryConverter.convert(voucher); + VoucherInsertQuery query = voucherCreateQueryConverter.convert(voucher); try { - VoucherCreateResultSet resultSet = repository.save(query); + VoucherInsertResultSet resultSet = repository.insert(query); + return voucherCreateResultConverter.convert(resultSet); } catch (DuplicateKeyException e) { log.info("DuplicateKeyException가 발생하였습니다. ", e); return createVoucher(voucherCreateParam, retryCount + 1); } - return voucherCreateResultConverter.convert(resultSet); } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/converter/VoucherCreateQueryConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/converter/VoucherCreateQueryConverter.java new file mode 100644 index 0000000000..a03acf5fff --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/converter/VoucherCreateQueryConverter.java @@ -0,0 +1,14 @@ +package com.wonu606.vouchermanager.service.voucher.converter; + +import com.wonu606.vouchermanager.domain.voucher.Voucher; +import com.wonu606.vouchermanager.repository.voucher.query.VoucherInsertQuery; +import org.springframework.core.convert.converter.Converter; + +public class VoucherCreateQueryConverter implements Converter { + + @Override + public VoucherInsertQuery convert(Voucher voucher) { + return new VoucherInsertQuery(voucher.getClass().getSimpleName(), + voucher.getUuid().toString(), voucher.getDiscountValue()); + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/converter/VoucherCreateResultConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/converter/VoucherCreateResultConverter.java new file mode 100644 index 0000000000..c0fbd1aa97 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/converter/VoucherCreateResultConverter.java @@ -0,0 +1,14 @@ +package com.wonu606.vouchermanager.service.voucher.converter; + +import com.wonu606.vouchermanager.repository.voucher.resultset.VoucherInsertResultSet; +import com.wonu606.vouchermanager.service.voucher.result.VoucherCreateResult; +import org.springframework.core.convert.converter.Converter; + +public class VoucherCreateResultConverter implements + Converter { + + @Override + public VoucherCreateResult convert(VoucherInsertResultSet param) { + return new VoucherCreateResult(param.getAffectedRowsCount() == 1); + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/converter/VoucherResultConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/converter/VoucherResultConverter.java new file mode 100644 index 0000000000..8cf7ee8707 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/converter/VoucherResultConverter.java @@ -0,0 +1,14 @@ +package com.wonu606.vouchermanager.service.voucher.converter; + +import com.wonu606.vouchermanager.repository.voucher.resultset.VoucherResultSet; +import com.wonu606.vouchermanager.service.voucher.result.VoucherResult; +import org.springframework.core.convert.converter.Converter; + +public class VoucherResultConverter implements Converter { + + @Override + public VoucherResult convert(VoucherResultSet resultSet) { + return new VoucherResult(resultSet.getSimpleName(), resultSet.getUuid(), + resultSet.getDiscountValue()); + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/factory/VoucherFactory.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/factory/VoucherFactory.java index 08d3e43352..d2fb73be1b 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/factory/VoucherFactory.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/factory/VoucherFactory.java @@ -3,10 +3,10 @@ import com.wonu606.vouchermanager.domain.voucher.FixedAmountVoucher; import com.wonu606.vouchermanager.domain.voucher.PercentageVoucher; import com.wonu606.vouchermanager.domain.voucher.Voucher; -import com.wonu606.vouchermanager.service.voucher.param.VoucherCreateParam; import com.wonu606.vouchermanager.domain.voucher.discountvalue.FixedAmountValue; import com.wonu606.vouchermanager.domain.voucher.discountvalue.PercentageDiscountValue; import com.wonu606.vouchermanager.service.util.UUIDGenerator; +import com.wonu606.vouchermanager.service.voucher.param.VoucherCreateParam; import org.springframework.stereotype.Component; @Component diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/result/VoucherCreateResult.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/result/VoucherCreateResult.java new file mode 100644 index 0000000000..3e350d2efb --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/result/VoucherCreateResult.java @@ -0,0 +1,14 @@ +package com.wonu606.vouchermanager.service.voucher.result; + +public class VoucherCreateResult { + + private final Boolean taskSuccess; + + public VoucherCreateResult(Boolean taskSuccess) { + this.taskSuccess = taskSuccess; + } + + public Boolean getTaskSuccess() { + return taskSuccess; + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/result/VoucherResult.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/result/VoucherResult.java new file mode 100644 index 0000000000..2fd5203482 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/result/VoucherResult.java @@ -0,0 +1,25 @@ +package com.wonu606.vouchermanager.service.voucher.result; + +public class VoucherResult { + private final String voucherUuid; + private final String voucherClassType; + private final Double discountValue; + + public VoucherResult(String voucherUuid, String voucherClassType, Double discountValue) { + this.voucherUuid = voucherUuid; + this.voucherClassType = voucherClassType; + this.discountValue = discountValue; + } + + public String getVoucherUuid() { + return voucherUuid; + } + + public String getVoucherClassType() { + return voucherClassType; + } + + public Double getDiscountValue() { + return discountValue; + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/VoucherWalletService.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/VoucherWalletService.java index b56f19700d..4a71222fee 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/VoucherWalletService.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/VoucherWalletService.java @@ -21,7 +21,7 @@ import com.wonu606.vouchermanager.service.voucherwallet.param.WalletDeleteParam; import com.wonu606.vouchermanager.service.voucherwallet.result.OwnedCustomerResult; import com.wonu606.vouchermanager.service.voucherwallet.result.OwnedVoucherResult; -import com.wonu606.vouchermanager.service.voucherwallet.result.WalletAssignResultSet; +import com.wonu606.vouchermanager.service.voucherwallet.result.WalletAssignResult; import java.util.List; import java.util.stream.Collectors; import org.springframework.stereotype.Component; @@ -69,7 +69,7 @@ public void deleteWallet(WalletDeleteParam param) { voucherWalletRepository.delete(query); } - public WalletAssignResultSet assignWallet(WalletAssignParam param) { + public WalletAssignResult assignWallet(WalletAssignParam param) { WalletInsertQuery query = walletInsertQueryConverter.convert(param); WalletInsertResultSet resultSet = voucherWalletRepository.insert(query); diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/WalletInsertResultConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/WalletInsertResultConverter.java index f1ffcac381..8a1caab568 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/WalletInsertResultConverter.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/WalletInsertResultConverter.java @@ -1,13 +1,13 @@ package com.wonu606.vouchermanager.service.voucherwallet.converter; import com.wonu606.vouchermanager.repository.voucherwallet.resultset.WalletInsertResultSet; -import com.wonu606.vouchermanager.service.voucherwallet.result.WalletAssignResultSet; +import com.wonu606.vouchermanager.service.voucherwallet.result.WalletAssignResult; import org.springframework.core.convert.converter.Converter; -public class WalletInsertResultConverter implements Converter { +public class WalletInsertResultConverter implements Converter { @Override - public WalletAssignResultSet convert(WalletInsertResultSet param) { - return new WalletAssignResultSet(param.getAffectedRowsCount() == 1); + public WalletAssignResult convert(WalletInsertResultSet param) { + return new WalletAssignResult(param.getAffectedRowsCount() == 1); } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/result/WalletAssignResultSet.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/result/WalletAssignResult.java similarity index 71% rename from voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/result/WalletAssignResultSet.java rename to voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/result/WalletAssignResult.java index 53a3b25385..bc4cbc1b50 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/result/WalletAssignResultSet.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/result/WalletAssignResult.java @@ -1,10 +1,10 @@ package com.wonu606.vouchermanager.service.voucherwallet.result; -public class WalletAssignResultSet { +public class WalletAssignResult { private final Boolean taskSuccess; - public WalletAssignResultSet(Boolean taskSuccess) { + public WalletAssignResult(Boolean taskSuccess) { this.taskSuccess = taskSuccess; } diff --git a/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/customer/JdbcCustomerResultSetRepositoryTest.java b/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/customer/JdbcCustomerResultSetRepositoryTest.java index 85cbbbdf68..805be5c24d 100644 --- a/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/customer/JdbcCustomerResultSetRepositoryTest.java +++ b/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/customer/JdbcCustomerResultSetRepositoryTest.java @@ -3,7 +3,7 @@ import static org.assertj.core.api.Assertions.assertThat; import com.wonu606.vouchermanager.domain.customer.Customer; -import com.wonu606.vouchermanager.domain.customer.CustomerResultSet; +import com.wonu606.vouchermanager.repository.customer.resultset.CustomerResultSet; import com.wonu606.vouchermanager.domain.customer.email.Email; import java.util.List; import java.util.Optional; diff --git a/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/customer/MappingCustomerRepositoryTest.java b/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/customer/MappingCustomerRepositoryTest.java index 9e80e07a9e..440017a2fa 100644 --- a/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/customer/MappingCustomerRepositoryTest.java +++ b/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/customer/MappingCustomerRepositoryTest.java @@ -7,7 +7,7 @@ import static org.mockito.Mockito.verify; import com.wonu606.vouchermanager.domain.customer.Customer; -import com.wonu606.vouchermanager.domain.customer.CustomerResultSet; +import com.wonu606.vouchermanager.repository.customer.resultset.CustomerResultSet; import com.wonu606.vouchermanager.domain.customer.email.Email; import java.util.ArrayList; import java.util.List; diff --git a/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucher/JdbcVoucherResultSetVoucherRepositoryTestCreate.java b/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucher/JdbcVoucherResultSetVoucherRepositoryTestCreate.java index 52c7f8ef40..20fe2e75de 100644 --- a/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucher/JdbcVoucherResultSetVoucherRepositoryTestCreate.java +++ b/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucher/JdbcVoucherResultSetVoucherRepositoryTestCreate.java @@ -5,7 +5,7 @@ import com.wonu606.vouchermanager.domain.voucher.FixedAmountVoucher; import com.wonu606.vouchermanager.domain.voucher.PercentageVoucher; import com.wonu606.vouchermanager.domain.voucher.Voucher; -import com.wonu606.vouchermanager.domain.voucher.VoucherCreateResultSet; +import com.wonu606.vouchermanager.repository.voucher.resultset.VoucherCreateResultSet; import com.wonu606.vouchermanager.domain.voucher.discountvalue.FixedAmountValue; import com.wonu606.vouchermanager.domain.voucher.discountvalue.PercentageDiscountValue; import java.util.List; @@ -22,14 +22,14 @@ @DisplayName("JdbcVoucherResultSetRepository 테스트") class JdbcVoucherResultSetVoucherRepositoryTestCreate { - private JdbcVoucherResultSetRepository jdbcVoucherResultSetRepository; + private VoucherJdbcRepository voucherJdbcRepository; @Autowired private DataSource dataSource; @BeforeEach void setUp() { - jdbcVoucherResultSetRepository = new JdbcVoucherResultSetRepository(dataSource); + voucherJdbcRepository = new VoucherJdbcRepository(dataSource); } @Test @@ -40,8 +40,8 @@ void save_UnsavedVoucher_VoucherSaved() { UUID.randomUUID(), new FixedAmountValue(50.0)); // when - jdbcVoucherResultSetRepository.save(voucher); - var result = jdbcVoucherResultSetRepository.findById(voucher.getUuid()); + voucherJdbcRepository.save(voucher); + var result = voucherJdbcRepository.findById(voucher.getUuid()); // then assertThat(result).isPresent(); @@ -56,10 +56,10 @@ void findById_savedVoucher_ReturnsVoucher() { // given Voucher voucher = new FixedAmountVoucher( UUID.randomUUID(), new FixedAmountValue(50.0)); - jdbcVoucherResultSetRepository.save(voucher); + voucherJdbcRepository.save(voucher); // when - Optional foundVoucher = jdbcVoucherResultSetRepository.findById( + Optional foundVoucher = voucherJdbcRepository.findById( voucher.getUuid()); // then @@ -74,7 +74,7 @@ void findById_UnsavedVoucher_ReturnsEmpty() { UUID nonExistentId = UUID.randomUUID(); // when - Optional foundVoucher = jdbcVoucherResultSetRepository.findById( + Optional foundVoucher = voucherJdbcRepository.findById( nonExistentId); // then @@ -89,11 +89,11 @@ void findAll_SavedVouchers_ReturnsAllVouchers() { UUID.randomUUID(), new FixedAmountValue(50.0)); Voucher voucher2 = new PercentageVoucher( UUID.randomUUID(), new PercentageDiscountValue(30.0)); - jdbcVoucherResultSetRepository.save(voucher1); - jdbcVoucherResultSetRepository.save(voucher2); + voucherJdbcRepository.save(voucher1); + voucherJdbcRepository.save(voucher2); // when - List allVouchers = jdbcVoucherResultSetRepository.findAll(); + List allVouchers = voucherJdbcRepository.findAll(); // then assertThat(allVouchers).hasSize(2); @@ -106,11 +106,11 @@ void deleteById_SavedVoucher_VoucherDeleted() { // given Voucher voucher = new FixedAmountVoucher( UUID.randomUUID(), new FixedAmountValue(50.0)); - jdbcVoucherResultSetRepository.save(voucher); + voucherJdbcRepository.save(voucher); // then - jdbcVoucherResultSetRepository.deleteById(voucher.getUuid()); - Optional foundVoucher = jdbcVoucherResultSetRepository.findById( + voucherJdbcRepository.deleteById(voucher.getUuid()); + Optional foundVoucher = voucherJdbcRepository.findById( voucher.getUuid()); // when @@ -125,12 +125,12 @@ void deleteAll_SavedMultipleVouchers_AllVouchersDeleted() { UUID.randomUUID(), new FixedAmountValue(50.0)); Voucher voucher2 = new PercentageVoucher( UUID.randomUUID(), new PercentageDiscountValue(30.0)); - jdbcVoucherResultSetRepository.save(voucher1); - jdbcVoucherResultSetRepository.save(voucher2); + voucherJdbcRepository.save(voucher1); + voucherJdbcRepository.save(voucher2); // then - jdbcVoucherResultSetRepository.deleteAll(); - List allVouchers = jdbcVoucherResultSetRepository.findAll(); + voucherJdbcRepository.deleteAll(); + List allVouchers = voucherJdbcRepository.findAll(); // when assertThat(allVouchers).isEmpty(); diff --git a/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucher/WrappingVoucherRepositoryTest.java b/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucher/WrappingVoucherRepositoryTest.java index 92a238c963..2589779d4a 100644 --- a/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucher/WrappingVoucherRepositoryTest.java +++ b/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucher/WrappingVoucherRepositoryTest.java @@ -9,7 +9,7 @@ import com.wonu606.vouchermanager.domain.voucher.FixedAmountVoucher; import com.wonu606.vouchermanager.domain.voucher.PercentageVoucher; import com.wonu606.vouchermanager.domain.voucher.Voucher; -import com.wonu606.vouchermanager.domain.voucher.VoucherCreateResultSet; +import com.wonu606.vouchermanager.repository.voucher.resultset.VoucherCreateResultSet; import com.wonu606.vouchermanager.domain.voucher.discountvalue.FixedAmountValue; import com.wonu606.vouchermanager.domain.voucher.discountvalue.PercentageDiscountValue; import java.util.ArrayList; diff --git a/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucherwallet/JdbcVoucherWalletRepositoryTest.java b/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucherwallet/JdbcVoucherWalletRepositoryTest.java index 924d54db21..1d9cb0a5a3 100644 --- a/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucherwallet/JdbcVoucherWalletRepositoryTest.java +++ b/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucherwallet/JdbcVoucherWalletRepositoryTest.java @@ -11,7 +11,7 @@ import com.wonu606.vouchermanager.domain.voucher.discountvalue.FixedAmountValue; import com.wonu606.vouchermanager.domain.voucher.discountvalue.PercentageDiscountValue; import com.wonu606.vouchermanager.repository.customer.JdbcCustomerResultSetRepository; -import com.wonu606.vouchermanager.repository.voucher.JdbcVoucherResultSetRepository; +import com.wonu606.vouchermanager.repository.voucher.VoucherJdbcRepository; import java.util.List; import java.util.UUID; import java.util.stream.Stream; @@ -37,8 +37,8 @@ class JdbcVoucherWalletRepositoryTest { void setUp() { customerVoucherWalletRepository = new JdbcVoucherWalletRepository(dataSource); - JdbcVoucherResultSetRepository voucherResultSetRepository = - new JdbcVoucherResultSetRepository(dataSource); + VoucherJdbcRepository voucherResultSetRepository = + new VoucherJdbcRepository(dataSource); JdbcCustomerResultSetRepository customerResultSetRepository = new JdbcCustomerResultSetRepository(dataSource); From 300a8a05edbb202f67b970147d47eabec36a6e44 Mon Sep 17 00:00:00 2001 From: wonu606 Date: Wed, 19 Jul 2023 05:52:08 +0900 Subject: [PATCH 13/37] =?UTF-8?q?refactor:=20VoucherController=EC=97=90?= =?UTF-8?q?=EC=84=9C=20DTO=20Converters=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../voucher/VoucherControllerCable.java | 6 +- .../voucher/io/VoucherConsoleIo.java | 4 +- .../controller/voucher/VoucherController.java | 62 ++++++++++++------- .../OwnedCustomerResponseConverter.java | 13 ++++ .../OwnedCustomersParamConverter.java | 14 +++++ .../OwnedCustomersResponseConverter.java | 5 -- .../VoucherCreateParamConverter.java | 13 ++++ .../VoucherCreateResponseConverter.java | 10 ++- .../VoucherGetResponseConverter.java | 5 -- .../converter/VoucherResponseConverter.java | 13 ++++ .../converter/WalletAssignParamConverter.java | 14 +++++ .../voucher/reqeust/WalletAssignRequest.java | 12 +--- .../response/OwnedCustomerResponse.java | 14 +++++ .../response/OwnedCustomersResponse.java | 16 ----- .../response/VoucherCreateResponse.java | 16 ++--- .../voucher/response/VoucherResponse.java | 10 +-- .../voucher/param/VoucherCreateParam.java | 6 +- 17 files changed, 148 insertions(+), 85 deletions(-) create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/OwnedCustomerResponseConverter.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/OwnedCustomersParamConverter.java delete mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/OwnedCustomersResponseConverter.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/VoucherCreateParamConverter.java delete mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/VoucherGetResponseConverter.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/VoucherResponseConverter.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/WalletAssignParamConverter.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/response/OwnedCustomerResponse.java delete mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/response/OwnedCustomersResponse.java diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/voucher/VoucherControllerCable.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/voucher/VoucherControllerCable.java index 32e56275be..296d9e7243 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/voucher/VoucherControllerCable.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/voucher/VoucherControllerCable.java @@ -5,7 +5,7 @@ import com.wonu606.vouchermanager.controller.voucher.reqeust.VoucherCreateRequest; import com.wonu606.vouchermanager.controller.voucher.reqeust.OwnedCustomersRequest; import com.wonu606.vouchermanager.controller.voucher.reqeust.WalletAssignRequest; -import com.wonu606.vouchermanager.controller.voucher.response.OwnedCustomersResponse; +import com.wonu606.vouchermanager.controller.voucher.response.OwnedCustomerResponse; import com.wonu606.vouchermanager.controller.voucher.response.VoucherResponse; import org.springframework.stereotype.Component; @@ -54,9 +54,9 @@ private void executeMenuAction(VoucherControllerMenu menu) { case CUSTOMER_LIST: String voucherId = consoleIo.readString("VoucherId"); - OwnedCustomersResponse ownedCustomersResponse = controller.getOwnedCustomersByVoucher( + OwnedCustomerResponse ownedCustomerResponse = controller.getOwnedCustomersByVoucher( new OwnedCustomersRequest(voucherId)); - consoleIo.displayCustomerList(ownedCustomersResponse); + consoleIo.displayCustomerList(ownedCustomerResponse); return; default: diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/voucher/io/VoucherConsoleIo.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/voucher/io/VoucherConsoleIo.java index aeb858fc4e..88af255be9 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/voucher/io/VoucherConsoleIo.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/voucher/io/VoucherConsoleIo.java @@ -4,7 +4,7 @@ import com.wonu606.vouchermanager.console.ConsoleInput; import com.wonu606.vouchermanager.console.ConsolePrinter; import com.wonu606.vouchermanager.console.controllercable.voucher.VoucherControllerMenu; -import com.wonu606.vouchermanager.controller.voucher.response.OwnedCustomersResponse; +import com.wonu606.vouchermanager.controller.voucher.response.OwnedCustomerResponse; import com.wonu606.vouchermanager.controller.voucher.response.VoucherResponse; import java.util.List; import org.springframework.stereotype.Component; @@ -34,7 +34,7 @@ public void displayVoucherList(VoucherResponse voucherList) { voucherIds.forEach(printer::displayMessage); } - public void displayCustomerList(OwnedCustomersResponse response) { + public void displayCustomerList(OwnedCustomerResponse response) { printer.displayMessage("=== 보유한 Customer 리스트 ==="); List emails = response.getEmails(); emails.forEach(printer::displayMessage); diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/VoucherController.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/VoucherController.java index 9e0ed8f901..33b2a9877d 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/VoucherController.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/VoucherController.java @@ -1,18 +1,27 @@ package com.wonu606.vouchermanager.controller.voucher; +import com.wonu606.vouchermanager.controller.voucher.converter.OwnedCustomerResponseConverter; +import com.wonu606.vouchermanager.controller.voucher.converter.OwnedCustomersParamConverter; +import com.wonu606.vouchermanager.controller.voucher.converter.VoucherCreateParamConverter; import com.wonu606.vouchermanager.controller.voucher.converter.VoucherCreateResponseConverter; -import com.wonu606.vouchermanager.controller.voucher.converter.OwnedCustomersResponseConverter; -import com.wonu606.vouchermanager.controller.voucher.converter.VoucherGetResponseConverter; +import com.wonu606.vouchermanager.controller.voucher.converter.VoucherResponseConverter; +import com.wonu606.vouchermanager.controller.voucher.converter.WalletAssignParamConverter; import com.wonu606.vouchermanager.controller.voucher.reqeust.OwnedCustomersRequest; import com.wonu606.vouchermanager.controller.voucher.reqeust.VoucherCreateRequest; import com.wonu606.vouchermanager.controller.voucher.reqeust.WalletAssignRequest; -import com.wonu606.vouchermanager.controller.voucher.response.OwnedCustomersResponse; +import com.wonu606.vouchermanager.controller.voucher.response.OwnedCustomerResponse; import com.wonu606.vouchermanager.controller.voucher.response.VoucherCreateResponse; import com.wonu606.vouchermanager.controller.voucher.response.VoucherResponse; -import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedCustomersParam; -import com.wonu606.vouchermanager.service.voucher.param.VoucherCreateParam; import com.wonu606.vouchermanager.service.voucher.VoucherService; +import com.wonu606.vouchermanager.service.voucher.param.VoucherCreateParam; +import com.wonu606.vouchermanager.service.voucher.result.VoucherCreateResult; +import com.wonu606.vouchermanager.service.voucher.result.VoucherResult; +import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedCustomersParam; import com.wonu606.vouchermanager.service.voucherwallet.param.WalletAssignParam; +import com.wonu606.vouchermanager.service.voucherwallet.result.OwnedCustomerResult; +import com.wonu606.vouchermanager.service.voucherwallet.result.WalletAssignResult; +import java.util.List; +import java.util.stream.Collectors; import org.springframework.stereotype.Component; @Component @@ -22,20 +31,21 @@ public class VoucherController { private final VoucherCreateParamConverter voucherCreateParamConverter; - private final OwnedCustomersParamConverter ownedCustomersParamConverter; - private final VoucherCreateResponseConverter voucherCreateResponseConverter; - private final VoucherGetResponseConverter voucherGetResponseConverter; - private final OwnedCustomersResponseConverter ownedCustomersResponseConverter; + private final VoucherResponseConverter voucherResponseConverter; + private final OwnedCustomersParamConverter ownedCustomersParamConverter; + private final OwnedCustomerResponseConverter ownedCustomerResponseConverter; + private final WalletAssignParamConverter walletAssignParamConverter; - public VoucherController(VoucherService service, - VoucherCreateResponseConverter voucherCreateResponseConverter, - VoucherGetResponseConverter voucherGetResponseConverter, - OwnedCustomersResponseConverter OwnedCustomersResponseConverter) { + public VoucherController(VoucherService service) { this.service = service; - this.voucherCreateResponseConverter = voucherCreateResponseConverter; - this.voucherGetResponseConverter = voucherGetResponseConverter; - this.ownedCustomersResponseConverter = OwnedCustomersResponseConverter; + + voucherCreateParamConverter = new VoucherCreateParamConverter(); + voucherCreateResponseConverter = new VoucherCreateResponseConverter(); + voucherResponseConverter = new VoucherResponseConverter(); + ownedCustomersParamConverter = new OwnedCustomersParamConverter(); + ownedCustomerResponseConverter = new OwnedCustomerResponseConverter(); + walletAssignParamConverter = new WalletAssignParamConverter(); } public VoucherCreateResponse createVoucher(VoucherCreateRequest request) { @@ -45,21 +55,25 @@ public VoucherCreateResponse createVoucher(VoucherCreateRequest request) { return voucherCreateResponseConverter.convert(result); } - public VoucherResponse getVoucherList() { - VoucherGetResult result = service.getVoucherList(); + public List getVoucherList() { + List results = service.getVoucherList(); - return voucherGetResponseConverter.convert(result); + return results.stream() + .map(voucherResponseConverter::convert) + .collect(Collectors.toList()); } - public OwnedCustomersResponse getOwnedCustomersByVoucher(OwnedCustomersRequest request) { + public List getOwnedCustomersByVoucher(OwnedCustomersRequest request) { OwnedCustomersParam param = ownedCustomersParamConverter.convert(request); - OwnedCustomersResult result = service.findOwnedCustomersByVoucher(param); + List results = service.findOwnedCustomersByVoucher(param); - return ownedCustomersResponseConverter.convert(result); + return results.stream() + .map(ownedCustomerResponseConverter::convert) + .collect(Collectors.toList()); } public void assignWallet(WalletAssignRequest request) { - WalletAssignParam param = createWalletAssignParam(request); - WalletAssignResult result = service.assignWallet(param); + WalletAssignParam param = walletAssignParamConverter.convert(request); + WalletAssignResult walletAssignResult = service.assignWallet(param); } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/OwnedCustomerResponseConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/OwnedCustomerResponseConverter.java new file mode 100644 index 0000000000..6d20ee575c --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/OwnedCustomerResponseConverter.java @@ -0,0 +1,13 @@ +package com.wonu606.vouchermanager.controller.voucher.converter; + +import com.wonu606.vouchermanager.controller.voucher.response.OwnedCustomerResponse; +import com.wonu606.vouchermanager.service.voucherwallet.result.OwnedCustomerResult; +import org.springframework.core.convert.converter.Converter; + +public class OwnedCustomerResponseConverter implements Converter { + + @Override + public OwnedCustomerResponse convert(OwnedCustomerResult result) { + return new OwnedCustomerResponse(result.getCustomerEmail()); + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/OwnedCustomersParamConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/OwnedCustomersParamConverter.java new file mode 100644 index 0000000000..23a5b30155 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/OwnedCustomersParamConverter.java @@ -0,0 +1,14 @@ +package com.wonu606.vouchermanager.controller.voucher.converter; + +import com.wonu606.vouchermanager.controller.voucher.reqeust.OwnedCustomersRequest; +import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedCustomersParam; +import java.util.UUID; +import org.springframework.core.convert.converter.Converter; + +public class OwnedCustomersParamConverter implements Converter { + + @Override + public OwnedCustomersParam convert(OwnedCustomersRequest request) { + return new OwnedCustomersParam(UUID.fromString(request.getVoucherId())); + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/OwnedCustomersResponseConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/OwnedCustomersResponseConverter.java deleted file mode 100644 index 85b44d4a7e..0000000000 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/OwnedCustomersResponseConverter.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.wonu606.vouchermanager.controller.voucher.converter; - -public class OwnedCustomersResponseConverter { - -} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/VoucherCreateParamConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/VoucherCreateParamConverter.java new file mode 100644 index 0000000000..ee8b8f82ce --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/VoucherCreateParamConverter.java @@ -0,0 +1,13 @@ +package com.wonu606.vouchermanager.controller.voucher.converter; + +import com.wonu606.vouchermanager.controller.voucher.reqeust.VoucherCreateRequest; +import com.wonu606.vouchermanager.service.voucher.param.VoucherCreateParam; +import org.springframework.core.convert.converter.Converter; + +public class VoucherCreateParamConverter implements Converter { + + @Override + public VoucherCreateParam convert(VoucherCreateRequest request) { + return new VoucherCreateParam(request.getType(), request.getDiscountValue()); + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/VoucherCreateResponseConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/VoucherCreateResponseConverter.java index 585f65e476..f3b8c9b368 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/VoucherCreateResponseConverter.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/VoucherCreateResponseConverter.java @@ -1,5 +1,13 @@ package com.wonu606.vouchermanager.controller.voucher.converter; -public class VoucherCreateResponseConverter { +import com.wonu606.vouchermanager.controller.voucher.response.VoucherCreateResponse; +import com.wonu606.vouchermanager.service.voucher.result.VoucherCreateResult; +import org.springframework.core.convert.converter.Converter; +public class VoucherCreateResponseConverter implements Converter { + + @Override + public VoucherCreateResponse convert(VoucherCreateResult result) { + return new VoucherCreateResponse(result.getTaskSuccess()); + } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/VoucherGetResponseConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/VoucherGetResponseConverter.java deleted file mode 100644 index 5ad7e3e3e2..0000000000 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/VoucherGetResponseConverter.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.wonu606.vouchermanager.controller.voucher.converter; - -public class VoucherGetResponseConverter { - -} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/VoucherResponseConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/VoucherResponseConverter.java new file mode 100644 index 0000000000..e3235581fd --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/VoucherResponseConverter.java @@ -0,0 +1,13 @@ +package com.wonu606.vouchermanager.controller.voucher.converter; + +import com.wonu606.vouchermanager.controller.voucher.response.VoucherResponse; +import com.wonu606.vouchermanager.service.voucher.result.VoucherResult; +import org.springframework.core.convert.converter.Converter; + +public class VoucherResponseConverter implements Converter { + + @Override + public VoucherResponse convert(VoucherResult result) { + return new VoucherResponse(result.getVoucherUuid()); + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/WalletAssignParamConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/WalletAssignParamConverter.java new file mode 100644 index 0000000000..b962a4b3a4 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/WalletAssignParamConverter.java @@ -0,0 +1,14 @@ +package com.wonu606.vouchermanager.controller.voucher.converter; + +import com.wonu606.vouchermanager.controller.voucher.reqeust.WalletAssignRequest; +import com.wonu606.vouchermanager.service.voucherwallet.param.WalletAssignParam; +import java.util.UUID; +import org.springframework.core.convert.converter.Converter; + +public class WalletAssignParamConverter implements Converter { + + @Override + public WalletAssignParam convert(WalletAssignRequest request) { + return new WalletAssignParam(UUID.fromString(request.getVoucherId())); + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/reqeust/WalletAssignRequest.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/reqeust/WalletAssignRequest.java index 39b4c44a15..69c4dcc67b 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/reqeust/WalletAssignRequest.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/reqeust/WalletAssignRequest.java @@ -1,22 +1,14 @@ package com.wonu606.vouchermanager.controller.voucher.reqeust; -import java.util.UUID; - public class WalletAssignRequest { private final String voucherId; - private final String email; - public WalletAssignRequest(String voucherId, String email) { + public WalletAssignRequest(String voucherId) { this.voucherId = voucherId; - this.email = email; } - public UUID getVoucherId() { + public String getVoucherId() { return voucherId; } - - public String getEmail() { - return email; - } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/response/OwnedCustomerResponse.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/response/OwnedCustomerResponse.java new file mode 100644 index 0000000000..8233e0cf97 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/response/OwnedCustomerResponse.java @@ -0,0 +1,14 @@ +package com.wonu606.vouchermanager.controller.voucher.response; + +public class OwnedCustomerResponse { + + private final String email; + + public OwnedCustomerResponse(String email) { + this.email = email; + } + + public String getEmail() { + return email; + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/response/OwnedCustomersResponse.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/response/OwnedCustomersResponse.java deleted file mode 100644 index d9584199f4..0000000000 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/response/OwnedCustomersResponse.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.wonu606.vouchermanager.controller.voucher.response; - -import java.util.List; - -public class OwnedCustomersResponse { - - private final List emails; - - public OwnedCustomersResponse(List emails) { - this.emails = emails; - } - - public List getEmails() { - return emails; - } -} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/response/VoucherCreateResponse.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/response/VoucherCreateResponse.java index 125e6ac4fd..da32efb0bc 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/response/VoucherCreateResponse.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/response/VoucherCreateResponse.java @@ -2,19 +2,13 @@ public class VoucherCreateResponse { - private final String type; - private final String discountValue; + private final boolean success; - public VoucherCreateResponse(String type, String discountValue) { - this.type = type; - this.discountValue = discountValue; + public VoucherCreateResponse(boolean success) { + this.success = success; } - public String getType() { - return type; - } - - public String getDiscountValue() { - return discountValue; + public boolean isSuccess() { + return success; } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/response/VoucherResponse.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/response/VoucherResponse.java index 3d53a24cd2..9ef1243ef0 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/response/VoucherResponse.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/response/VoucherResponse.java @@ -4,13 +4,13 @@ public class VoucherResponse { - private final List voucherIds; + private final String voucherUuid; - public VoucherResponse(List voucherIds) { - this.voucherIds = voucherIds; + public VoucherResponse(String voucherUuid) { + this.voucherUuid = voucherUuid; } - public List getVoucherIds() { - return voucherIds; + public String getVoucherUuid() { + return voucherUuid; } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/param/VoucherCreateParam.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/param/VoucherCreateParam.java index 5bd0fce18a..cf7fa65b49 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/param/VoucherCreateParam.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/param/VoucherCreateParam.java @@ -3,9 +3,9 @@ public class VoucherCreateParam { private final String type; - private final double discountValue; + private final Double discountValue; - public VoucherCreateParam(String type, double discountValue) { + public VoucherCreateParam(String type, Double discountValue) { this.type = type; this.discountValue = discountValue; } @@ -14,7 +14,7 @@ public String getType() { return type; } - public double getDiscountValue() { + public Double getDiscountValue() { return discountValue; } } From f96ca819c4b24c88204841d9fccd7ed2e2e9d0cd Mon Sep 17 00:00:00 2001 From: wonu606 Date: Wed, 19 Jul 2023 16:07:14 +0900 Subject: [PATCH 14/37] =?UTF-8?q?refactor:=20CustomerRepository=20?= =?UTF-8?q?=EC=9D=98=EC=A1=B4=EC=84=B1=20=EC=A0=9C=EA=B1=B0=20=EB=B0=8F=20?= =?UTF-8?q?DTO=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../customer/response/CustomerResponse.java | 8 +- .../domain/voucherwallet/VoucherWallet.java | 7 +- .../customer/CustomerJdbcRepository.java | 49 +++++++ .../customer/CustomerRepository.java | 18 +-- .../customer/CustomerResultSetRepository.java | 22 --- .../JdbcCustomerResultSetRepository.java | 125 ------------------ .../customer/MappingCustomerRepository.java | 62 --------- .../customer/query/CustomerCreateQuery.java | 20 +++ .../resultset/CustomerCreateResultSet.java | 14 ++ .../customer/resultset/CustomerResultSet.java | 10 +- .../rowmapper/CustomerResultSetRowMapper.java | 18 +++ .../service/customer/CustomerService.java | 8 +- .../param/OwnedVoucherParam.java | 10 +- .../param/WalletAssignParam.java | 2 - ...t.java => CustomerJdbcRepositoryTest.java} | 36 ++--- .../MappingCustomerRepositoryTest.java | 4 +- .../JdbcVoucherWalletRepositoryTest.java | 6 +- 17 files changed, 151 insertions(+), 268 deletions(-) create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/CustomerJdbcRepository.java delete mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/CustomerResultSetRepository.java delete mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/JdbcCustomerResultSetRepository.java delete mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/MappingCustomerRepository.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/query/CustomerCreateQuery.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/resultset/CustomerCreateResultSet.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/rowmapper/CustomerResultSetRowMapper.java rename voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/customer/{JdbcCustomerResultSetRepositoryTest.java => CustomerJdbcRepositoryTest.java} (76%) diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/response/CustomerResponse.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/response/CustomerResponse.java index 2804b55118..28527d4ccc 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/response/CustomerResponse.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/response/CustomerResponse.java @@ -1,18 +1,16 @@ package com.wonu606.vouchermanager.controller.customer.response; -import com.wonu606.vouchermanager.domain.customer.email.Email; - public class CustomerResponse { - private final Email email; + private final String email; private final String nickname; - public CustomerResponse(Email email, String nickname) { + public CustomerResponse(String email, String nickname) { this.email = email; this.nickname = nickname; } - public Email getEmail() { + public String getEmail() { return email; } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/voucherwallet/VoucherWallet.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/voucherwallet/VoucherWallet.java index e7ca5d7bd5..166f2dff8b 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/voucherwallet/VoucherWallet.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/voucherwallet/VoucherWallet.java @@ -1,15 +1,14 @@ package com.wonu606.vouchermanager.domain.voucherwallet; -import com.wonu606.vouchermanager.domain.customer.email.Email; import java.util.Objects; import java.util.UUID; public class VoucherWallet { private final UUID voucherUuid; - private final Email email; + private final String email; - public VoucherWallet(UUID voucherUuid, Email email) { + public VoucherWallet(UUID voucherUuid, String email) { this.voucherUuid = voucherUuid; this.email = email; } @@ -19,7 +18,7 @@ public UUID getVoucherUuid() { } public String getEmailAddress() { - return email.getAddress(); + return email; } @Override diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/CustomerJdbcRepository.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/CustomerJdbcRepository.java new file mode 100644 index 0000000000..2ffd05ecb3 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/CustomerJdbcRepository.java @@ -0,0 +1,49 @@ +package com.wonu606.vouchermanager.repository.customer; + +import com.wonu606.vouchermanager.repository.customer.query.CustomerCreateQuery; +import com.wonu606.vouchermanager.repository.customer.resultset.CustomerCreateResultSet; +import com.wonu606.vouchermanager.repository.customer.resultset.CustomerResultSet; +import com.wonu606.vouchermanager.repository.customer.rowmapper.CustomerResultSetRowMapper; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import javax.sql.DataSource; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; +import org.springframework.stereotype.Component; + +@Component +public class CustomerJdbcRepository implements CustomerRepository { + + private final NamedParameterJdbcTemplate namedParameterJdbcTemplate; + + private final CustomerResultSetRowMapper customerResultSetRowMapper; + + public CustomerJdbcRepository(DataSource dataSource) { + this.namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(dataSource); + + customerResultSetRowMapper = new CustomerResultSetRowMapper(); + } + + @Override + public CustomerCreateResultSet insert(CustomerCreateQuery query) { + String insertionSql = "INSERT INTO customer (email, nickname) VALUES (:email, :nickname)"; + Map params = new HashMap<>(); + params.put("email", query.getEmail()); + params.put("nickname", query.getNickname()); + return new CustomerCreateResultSet(namedParameterJdbcTemplate.update(insertionSql, params)); + } + + @Override + public List findAll() { + String selectionSql = "SELECT email, nickname FROM customer"; + return namedParameterJdbcTemplate.query(selectionSql, customerResultSetRowMapper); + } + + @Override + public void deleteByCustomerId(String email) { + String deletionSql = "DELETE FROM customer WHERE email = :email"; + Map params = new HashMap<>(); + params.put("email", email); + namedParameterJdbcTemplate.update(deletionSql, params); + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/CustomerRepository.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/CustomerRepository.java index be9ff8f1e4..ac0fb9e0cc 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/CustomerRepository.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/CustomerRepository.java @@ -1,21 +1,15 @@ package com.wonu606.vouchermanager.repository.customer; -import com.wonu606.vouchermanager.domain.customer.Customer; -import com.wonu606.vouchermanager.domain.customer.email.Email; +import com.wonu606.vouchermanager.repository.customer.query.CustomerCreateQuery; +import com.wonu606.vouchermanager.repository.customer.resultset.CustomerCreateResultSet; +import com.wonu606.vouchermanager.repository.customer.resultset.CustomerResultSet; import java.util.List; -import java.util.Optional; public interface CustomerRepository { - Customer save(Customer customer); + CustomerCreateResultSet insert(CustomerCreateQuery query); - Optional findByEmailAddress(Email email); + List findAll(); - List findAll(); - - List findAllByEmailAddresses(List emails); - - void deleteByEmailAddress(Email email); - - void deleteAll(); + void deleteByCustomerId(String email); } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/CustomerResultSetRepository.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/CustomerResultSetRepository.java deleted file mode 100644 index 640479171c..0000000000 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/CustomerResultSetRepository.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.wonu606.vouchermanager.repository.customer; - -import com.wonu606.vouchermanager.domain.customer.Customer; -import com.wonu606.vouchermanager.repository.customer.resultset.CustomerResultSet; -import com.wonu606.vouchermanager.domain.customer.email.Email; -import java.util.List; -import java.util.Optional; - -public interface CustomerResultSetRepository { - - Customer save(Customer customer); - - Optional findByEmailAddress(Email email); - - List findAll(); - - void deleteByEmailAddress(Email email); - - void deleteAll(); - - List findAllByEmailAddresses(List emails); -} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/JdbcCustomerResultSetRepository.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/JdbcCustomerResultSetRepository.java deleted file mode 100644 index f894f1c81f..0000000000 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/JdbcCustomerResultSetRepository.java +++ /dev/null @@ -1,125 +0,0 @@ -package com.wonu606.vouchermanager.repository.customer; - -import com.wonu606.vouchermanager.domain.customer.Customer; -import com.wonu606.vouchermanager.repository.customer.resultset.CustomerResultSet; -import com.wonu606.vouchermanager.domain.customer.email.Email; -import java.time.LocalDateTime; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Optional; -import java.util.stream.Collectors; -import javax.sql.DataSource; -import org.springframework.dao.EmptyResultDataAccessException; -import org.springframework.jdbc.core.RowMapper; -import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; -import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; -import org.springframework.stereotype.Component; - -@Component -public class JdbcCustomerResultSetRepository implements CustomerResultSetRepository { - - private final NamedParameterJdbcTemplate namedParameterJdbcTemplate; - - public JdbcCustomerResultSetRepository(DataSource dataSource) { - this.namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(dataSource); - } - - - @Override - public Customer save(Customer customer) { - if (isCustomerEmailAddressPresent(customer)) { - updateCustomer(customer); - } - insertCustomer(customer); - - return customer; - } - - @Override - public Optional findByEmailAddress(Email email) { - String selectSql = "SELECT * FROM customer WHERE email_address = :email_address"; - Map params = new HashMap<>(); - params.put("email_address", email.getAddress()); - try { - CustomerResultSet customerResultSet = namedParameterJdbcTemplate. - queryForObject(selectSql, params, customerResultSetRowMapper()); - return Optional.ofNullable(customerResultSet); - } catch (EmptyResultDataAccessException e) { - return Optional.empty(); - } - } - - @Override - public List findAll() { - String selectSql = "SELECT * FROM customer"; - return namedParameterJdbcTemplate.query(selectSql, customerResultSetRowMapper()); - } - - @Override - public void deleteByEmailAddress(Email email) { - String deleteSql = "DELETE FROM customer WHERE email_address = :email_address"; - Map params = new HashMap<>(); - params.put("email_address", email.getAddress()); - namedParameterJdbcTemplate.update(deleteSql, params); - } - - @Override - public void deleteAll() { - String deleteSql = "DELETE FROM customer"; - namedParameterJdbcTemplate.update(deleteSql, new HashMap<>()); - } - - @Override - public List findAllByEmailAddresses(List emails) { - if (emails.isEmpty()) { - return Collections.emptyList(); - } - - String selectSql = "SELECT * FROM customer WHERE email_address IN (:email_address)"; - - MapSqlParameterSource parameters = new MapSqlParameterSource(); - parameters.addValue("email_address", - emails.stream() - .map(Email::getAddress) - .collect(Collectors.toList())); - return namedParameterJdbcTemplate.query( - selectSql, parameters, customerResultSetRowMapper()); - } - - private boolean isCustomerEmailAddressPresent(Customer customer) { - String selectSql = "SELECT count(*) FROM customer WHERE email_address = :email_address"; - Map params = new HashMap<>(); - params.put("email_address", customer.getEmailAddress()); - Integer count = namedParameterJdbcTemplate.queryForObject(selectSql, params, Integer.class); - return count != null && count >= 0; - } - - private void updateCustomer(Customer customer) { - String updateSql = "UPDATE customer SET nickname = :nickname WHERE email_address = :email_address"; - Map params = new HashMap<>(); - params.put("email_address", customer.getEmailAddress()); - params.put("nickname", customer.getNickname()); - namedParameterJdbcTemplate.update(updateSql, params); - } - - private void insertCustomer(Customer customer) { - String insertSql = "INSERT INTO customer (email_address, nickname) VALUES (:email_address, :nickname)"; - Map params = new HashMap<>(); - params.put("email_address", customer.getEmailAddress()); - params.put("nickname", customer.getNickname()); - namedParameterJdbcTemplate.update(insertSql, params); - } - - private RowMapper customerResultSetRowMapper() { - return (resultSet, rowNum) -> { - String emailAddress = resultSet.getString("email_address"); - String nickname = resultSet.getString("nickname"); - LocalDateTime lastUpdated = resultSet.getTimestamp("last_updated").toLocalDateTime(); - LocalDateTime createdDate = resultSet.getTimestamp("created_date").toLocalDateTime(); - - return new CustomerResultSet(emailAddress, nickname, lastUpdated, createdDate); - }; - } -} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/MappingCustomerRepository.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/MappingCustomerRepository.java deleted file mode 100644 index c954600fac..0000000000 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/MappingCustomerRepository.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.wonu606.vouchermanager.repository.customer; - -import com.wonu606.vouchermanager.domain.customer.Customer; -import com.wonu606.vouchermanager.repository.customer.resultset.CustomerResultSet; -import com.wonu606.vouchermanager.domain.customer.email.Email; -import java.util.List; -import java.util.Optional; -import java.util.stream.Collectors; -import org.springframework.stereotype.Component; - -@Component -public class MappingCustomerRepository implements CustomerRepository { - - private final CustomerResultSetRepository customerResultSetRepository; - - public MappingCustomerRepository(CustomerResultSetRepository customerResultSetRepository) { - this.customerResultSetRepository = customerResultSetRepository; - } - - @Override - public Customer save(Customer customer) { - return customerResultSetRepository.save(customer); - } - - @Override - public Optional findByEmailAddress(Email email) { - return customerResultSetRepository.findByEmailAddress(email) - .map(this::convertResultSetToEntity); - } - - @Override - public List findAll() { - return customerResultSetRepository.findAll() - .stream().map(this::convertResultSetToEntity) - .collect(Collectors.toList()); - } - - @Override - public List findAllByEmailAddresses(List emails) { - List customerResultSets = - customerResultSetRepository.findAllByEmailAddresses(emails); - return customerResultSets.stream() - .map(this::convertResultSetToEntity) - .collect(Collectors.toList()); - } - - @Override - public void deleteByEmailAddress(Email email) { - customerResultSetRepository.deleteByEmailAddress(email); - } - - @Override - public void deleteAll() { - customerResultSetRepository.deleteAll(); - } - - private Customer convertResultSetToEntity(CustomerResultSet customerResultSet) { - return new Customer( - new Email(customerResultSet.getEmailAddress()), - customerResultSet.getNickname()); - } -} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/query/CustomerCreateQuery.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/query/CustomerCreateQuery.java new file mode 100644 index 0000000000..3e2d4e25c1 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/query/CustomerCreateQuery.java @@ -0,0 +1,20 @@ +package com.wonu606.vouchermanager.repository.customer.query; + +public class CustomerCreateQuery { + + private final String email; + private final String nickname; + + public CustomerCreateQuery(String email, String nickname) { + this.email = email; + this.nickname = nickname; + } + + public String getEmail() { + return email; + } + + public String getNickname() { + return nickname; + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/resultset/CustomerCreateResultSet.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/resultset/CustomerCreateResultSet.java new file mode 100644 index 0000000000..f76bcaad5f --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/resultset/CustomerCreateResultSet.java @@ -0,0 +1,14 @@ +package com.wonu606.vouchermanager.repository.customer.resultset; + +public class CustomerCreateResultSet { + + private final Integer taskSuccess; + + public CustomerCreateResultSet(Integer taskSuccess) { + this.taskSuccess = taskSuccess; + } + + public Integer getTaskSuccess() { + return taskSuccess; + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/resultset/CustomerResultSet.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/resultset/CustomerResultSet.java index 060488d901..3f287c1062 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/resultset/CustomerResultSet.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/resultset/CustomerResultSet.java @@ -2,16 +2,16 @@ public class CustomerResultSet { - private final String emailAddress; + private final String email; private final String nickname; - public CustomerResultSet(String emailAddress, String nickname) { - this.emailAddress = emailAddress; + public CustomerResultSet(String email, String nickname) { + this.email = email; this.nickname = nickname; } - public String getEmailAddress() { - return emailAddress; + public String getEmail() { + return email; } public String getNickname() { diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/rowmapper/CustomerResultSetRowMapper.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/rowmapper/CustomerResultSetRowMapper.java new file mode 100644 index 0000000000..164682358d --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/rowmapper/CustomerResultSetRowMapper.java @@ -0,0 +1,18 @@ +package com.wonu606.vouchermanager.repository.customer.rowmapper; + +import com.wonu606.vouchermanager.repository.customer.resultset.CustomerResultSet; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.time.LocalDateTime; +import org.springframework.jdbc.core.RowMapper; + +public class CustomerResultSetRowMapper implements RowMapper { + + @Override + public CustomerResultSet mapRow(ResultSet rs, int rowNum) throws SQLException { + String email = rs.getString("email"); + String nickname = rs.getString("nickname"); + + return new CustomerResultSet(email, nickname); + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/CustomerService.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/CustomerService.java index b8e6cd4a60..4898583136 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/CustomerService.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/CustomerService.java @@ -2,12 +2,14 @@ import com.wonu606.vouchermanager.domain.customer.Customer; import com.wonu606.vouchermanager.repository.customer.CustomerRepository; +import com.wonu606.vouchermanager.repository.customer.resultset.CustomerResultSet; import com.wonu606.vouchermanager.service.customer.creator.CustomerCreator; import com.wonu606.vouchermanager.service.customer.param.CustomerCreateParam; import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedVoucherParam; import com.wonu606.vouchermanager.service.voucherwallet.param.WalletDeleteParam; import com.wonu606.vouchermanager.service.customer.result.CustomerCreateResult; import com.wonu606.vouchermanager.service.voucherwallet.VoucherWalletService; +import java.util.List; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; @@ -36,12 +38,12 @@ public CustomerCreateResult createCustomer(CustomerCreateParam param) { Customer createdCustomer = customerCreator.create(param); CustomerCreateQuery query = customerQueryConverter.convert(createdCustomer); - CustomerCreateResultSet resultSet = repository.save(query); + CustomerCreateResultSet resultSet = repository.insert(query); return customerCreateResultConverter.convert(resultSet); } - public CustomerListResult getCustomerList() { - CustomerListResultSet resultSet = repository.findAll(); + public List getCustomerList() { + List resultSet = repository.findAll(); return customerListGetResultConverter.convert(resultSet); } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/param/OwnedVoucherParam.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/param/OwnedVoucherParam.java index 147fca4023..367dd36a0a 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/param/OwnedVoucherParam.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/param/OwnedVoucherParam.java @@ -1,14 +1,14 @@ package com.wonu606.vouchermanager.service.voucherwallet.param; -import com.wonu606.vouchermanager.domain.customer.email.Email; - public class OwnedVoucherParam { - private final Email email; + private final String email; - public OwnedVoucherParam(Email email) { + public OwnedVoucherParam(String email) { this.email = email; } - public String getEmail() {return email.getAddress();} + public String getEmail() { + return email; + } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/param/WalletAssignParam.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/param/WalletAssignParam.java index 682f7a925d..3d8e36545e 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/param/WalletAssignParam.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/param/WalletAssignParam.java @@ -1,7 +1,5 @@ package com.wonu606.vouchermanager.service.voucherwallet.param; -import com.wonu606.vouchermanager.domain.customer.email.Email; -import com.wonu606.vouchermanager.domain.voucherwallet.VoucherWallet; import java.util.UUID; public class WalletAssignParam { diff --git a/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/customer/JdbcCustomerResultSetRepositoryTest.java b/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/customer/CustomerJdbcRepositoryTest.java similarity index 76% rename from voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/customer/JdbcCustomerResultSetRepositoryTest.java rename to voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/customer/CustomerJdbcRepositoryTest.java index 805be5c24d..126e590644 100644 --- a/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/customer/JdbcCustomerResultSetRepositoryTest.java +++ b/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/customer/CustomerJdbcRepositoryTest.java @@ -16,16 +16,16 @@ @JdbcTest @DisplayName("JdbcCustomerResultSetRepository 테스트") -class JdbcCustomerResultSetRepositoryTest { +class CustomerJdbcRepositoryTest { - private JdbcCustomerResultSetRepository jdbcCustomerResultSetRepository; + private CustomerJdbcRepository customerJdbcRepository; @Autowired private DataSource dataSource; @BeforeEach void setUp() { - jdbcCustomerResultSetRepository = new JdbcCustomerResultSetRepository(dataSource); + customerJdbcRepository = new CustomerJdbcRepository(dataSource); } @Test @@ -38,8 +38,8 @@ void save_UnsavedCustomer_CustomerSaved() { Email email = new Email(customer.getEmailAddress()); // when - jdbcCustomerResultSetRepository.save(customer); - var foundCustomer = jdbcCustomerResultSetRepository.findByEmailAddress( + customerJdbcRepository.save(customer); + var foundCustomer = customerJdbcRepository.findByEmailAddress( email); // then @@ -54,13 +54,13 @@ void findByEmailAddress_CustomerPresent_ReturnsSameCustomer() { // given Customer customer = new Customer( new Email("Linlin@onepiece.org"), "Big Mom"); - jdbcCustomerResultSetRepository.save(customer); + customerJdbcRepository.save(customer); Email email = new Email(customer.getEmailAddress()); // when var foundCustomer = - jdbcCustomerResultSetRepository.findByEmailAddress(email); + customerJdbcRepository.findByEmailAddress(email); // then assertThat(foundCustomer).isPresent(); @@ -75,7 +75,7 @@ void findByEmailAddress_UnsavedCustomer_ReturnsEmpty() { // when var foundCustomer = - jdbcCustomerResultSetRepository.findByEmailAddress(unsavedEmail); + customerJdbcRepository.findByEmailAddress(unsavedEmail); // then assertThat(foundCustomer).isNotPresent(); @@ -89,11 +89,11 @@ void findAll_SavedCustomers_ReturnsAllCustomers() { new Email("Linlin@onepiece.org"), "Big Mom"); Customer customer2 = new Customer( new Email("loopy@onepiece.org"), "Pirate King"); - jdbcCustomerResultSetRepository.save(customer1); - jdbcCustomerResultSetRepository.save(customer2); + customerJdbcRepository.save(customer1); + customerJdbcRepository.save(customer2); // when - List allCustomers = jdbcCustomerResultSetRepository.findAll(); + List allCustomers = customerJdbcRepository.findAll(); // then assertThat(allCustomers).hasSize(2); @@ -107,13 +107,13 @@ void deleteByEmailAddress_SavedCustomer_CustomerDeleted() { // given Customer customer = new Customer( new Email("Linlin@onepiece.org"), "Big Mom"); - jdbcCustomerResultSetRepository.save(customer); + customerJdbcRepository.save(customer); Email email = new Email(customer.getEmailAddress()); // then - jdbcCustomerResultSetRepository.deleteByEmailAddress(email); - Optional foundCustomer = jdbcCustomerResultSetRepository + customerJdbcRepository.deleteByEmailAddress(email); + Optional foundCustomer = customerJdbcRepository .findByEmailAddress(email); // when @@ -128,12 +128,12 @@ void deleteAll_MultipleCustomers_AllCustomersDeleted() { new Email("Linlin@onepiece.org"), "Big Mom"); Customer customer2 = new Customer( new Email("loopy@onepiece.org"), "Pirate King"); - jdbcCustomerResultSetRepository.save(customer1); - jdbcCustomerResultSetRepository.save(customer2); + customerJdbcRepository.save(customer1); + customerJdbcRepository.save(customer2); // then - jdbcCustomerResultSetRepository.deleteAll(); - List allCustomers = jdbcCustomerResultSetRepository.findAll(); + customerJdbcRepository.deleteAll(); + List allCustomers = customerJdbcRepository.findAll(); // when assertThat(allCustomers).isEmpty(); diff --git a/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/customer/MappingCustomerRepositoryTest.java b/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/customer/MappingCustomerRepositoryTest.java index 440017a2fa..0c4230f338 100644 --- a/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/customer/MappingCustomerRepositoryTest.java +++ b/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/customer/MappingCustomerRepositoryTest.java @@ -48,7 +48,7 @@ void save_VoucherProvided_ReturnVoucher() { Customer customer = mock(Customer.class); // then - customerRepository.save(customer); + customerRepository.insert(customer); // when verify(customerResultSetRepository, times(1)).save(customer); @@ -115,7 +115,7 @@ void deleteByEmailAddress_EmailAddress_ReturnsSameEmailAddress() { Email expectedEmail = new Email("Linlin@onepiece.org"); // when - customerRepository.deleteByEmailAddress(expectedEmail); + customerRepository.deleteByCustomerId(expectedEmail); // then verify(customerResultSetRepository, times(1)).deleteByEmailAddress(expectedEmail); diff --git a/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucherwallet/JdbcVoucherWalletRepositoryTest.java b/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucherwallet/JdbcVoucherWalletRepositoryTest.java index 1d9cb0a5a3..008aca927c 100644 --- a/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucherwallet/JdbcVoucherWalletRepositoryTest.java +++ b/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucherwallet/JdbcVoucherWalletRepositoryTest.java @@ -10,7 +10,7 @@ import com.wonu606.vouchermanager.domain.voucher.Voucher; import com.wonu606.vouchermanager.domain.voucher.discountvalue.FixedAmountValue; import com.wonu606.vouchermanager.domain.voucher.discountvalue.PercentageDiscountValue; -import com.wonu606.vouchermanager.repository.customer.JdbcCustomerResultSetRepository; +import com.wonu606.vouchermanager.repository.customer.CustomerJdbcRepository; import com.wonu606.vouchermanager.repository.voucher.VoucherJdbcRepository; import java.util.List; import java.util.UUID; @@ -39,8 +39,8 @@ void setUp() { VoucherJdbcRepository voucherResultSetRepository = new VoucherJdbcRepository(dataSource); - JdbcCustomerResultSetRepository customerResultSetRepository = - new JdbcCustomerResultSetRepository(dataSource); + CustomerJdbcRepository customerResultSetRepository = + new CustomerJdbcRepository(dataSource); givenCustomerVouchers().forEach( arguments -> { From fb0c5f64396beacdedc07dc3743ae6f9f6844f15 Mon Sep 17 00:00:00 2001 From: wonu606 Date: Wed, 19 Jul 2023 16:21:09 +0900 Subject: [PATCH 15/37] =?UTF-8?q?refactor:=20CustomerService=EC=97=90?= =?UTF-8?q?=EC=84=9C=20DTO=20Converters=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/customer/CustomerService.java | 40 +++++++++++++------ .../CustomerCreateQueryConverter.java | 13 ++++++ .../CustomerCreateResultConverter.java | 15 +++++++ .../converter/CustomerResultConverter.java | 13 ++++++ .../customer/result/CustomerCreateResult.java | 9 +++++ .../customer/result/CustomerResult.java | 20 ++++++++++ 6 files changed, 97 insertions(+), 13 deletions(-) create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/converter/CustomerCreateQueryConverter.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/converter/CustomerCreateResultConverter.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/converter/CustomerResultConverter.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/result/CustomerResult.java diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/CustomerService.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/CustomerService.java index 4898583136..f651e2b6fd 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/CustomerService.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/CustomerService.java @@ -2,14 +2,22 @@ import com.wonu606.vouchermanager.domain.customer.Customer; import com.wonu606.vouchermanager.repository.customer.CustomerRepository; +import com.wonu606.vouchermanager.repository.customer.query.CustomerCreateQuery; +import com.wonu606.vouchermanager.repository.customer.resultset.CustomerCreateResultSet; import com.wonu606.vouchermanager.repository.customer.resultset.CustomerResultSet; +import com.wonu606.vouchermanager.service.customer.converter.CustomerCreateQueryConverter; +import com.wonu606.vouchermanager.service.customer.converter.CustomerCreateResultConverter; +import com.wonu606.vouchermanager.service.customer.converter.CustomerResultConverter; import com.wonu606.vouchermanager.service.customer.creator.CustomerCreator; import com.wonu606.vouchermanager.service.customer.param.CustomerCreateParam; -import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedVoucherParam; -import com.wonu606.vouchermanager.service.voucherwallet.param.WalletDeleteParam; import com.wonu606.vouchermanager.service.customer.result.CustomerCreateResult; +import com.wonu606.vouchermanager.service.customer.result.CustomerResult; import com.wonu606.vouchermanager.service.voucherwallet.VoucherWalletService; +import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedVoucherParam; +import com.wonu606.vouchermanager.service.voucherwallet.param.WalletDeleteParam; +import com.wonu606.vouchermanager.service.voucherwallet.result.OwnedVoucherResult; import java.util.List; +import java.util.stream.Collectors; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; @@ -22,32 +30,38 @@ public class CustomerService { private final CustomerRepository repository; private final CustomerCreator customerCreator; + private final CustomerCreateQueryConverter customerCreateQueryConverter; + private final CustomerCreateResultConverter customerCreateResultConverter; + private final CustomerResultConverter customerResultConverter; - private final CustomerResultSetustomerCreateResultConverter customerCreateResultConverter; - private final CustomerListGetResultConverter customerListGetResultConverter; - - public CustomerService(VoucherWalletService voucherWalletService, CustomerRepository repository) { + public CustomerService(VoucherWalletService voucherWalletService, + CustomerRepository repository) { this.voucherWalletService = voucherWalletService; this.repository = repository; - this.customerCreator = new CustomerCreator(); - this.customerCreateResultConverter; - this.customerListGetResultConverter; + + customerCreator = new CustomerCreator(); + customerCreateQueryConverter = new CustomerCreateQueryConverter(); + customerCreateResultConverter = new CustomerCreateResultConverter(); + customerResultConverter = new CustomerResultConverter(); } public CustomerCreateResult createCustomer(CustomerCreateParam param) { Customer createdCustomer = customerCreator.create(param); - CustomerCreateQuery query = customerQueryConverter.convert(createdCustomer); + CustomerCreateQuery query = customerCreateQueryConverter.convert(createdCustomer); CustomerCreateResultSet resultSet = repository.insert(query); return customerCreateResultConverter.convert(resultSet); } public List getCustomerList() { - List resultSet = repository.findAll(); - return customerListGetResultConverter.convert(resultSet); + List resultSets = repository.findAll(); + + return resultSets.stream() + .map(customerResultConverter::convert) + .collect(Collectors.toList()); } - public OwnedVouchersResult findOwnedVouchersByCustomer(OwnedVoucherParam param) { + public List findOwnedVouchersByCustomer(OwnedVoucherParam param) { return voucherWalletService.findOwnedVouchersByCustomer(param); } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/converter/CustomerCreateQueryConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/converter/CustomerCreateQueryConverter.java new file mode 100644 index 0000000000..2fd650bc4a --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/converter/CustomerCreateQueryConverter.java @@ -0,0 +1,13 @@ +package com.wonu606.vouchermanager.service.customer.converter; + +import com.wonu606.vouchermanager.domain.customer.Customer; +import com.wonu606.vouchermanager.repository.customer.query.CustomerCreateQuery; +import org.springframework.core.convert.converter.Converter; + +public class CustomerCreateQueryConverter implements Converter { + + @Override + public CustomerCreateQuery convert(Customer entity) { + return new CustomerCreateQuery(entity.getEmailAddress(), entity.getNickname()); + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/converter/CustomerCreateResultConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/converter/CustomerCreateResultConverter.java new file mode 100644 index 0000000000..66e3ae049d --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/converter/CustomerCreateResultConverter.java @@ -0,0 +1,15 @@ +package com.wonu606.vouchermanager.service.customer.converter; + +import com.wonu606.vouchermanager.domain.customer.Customer; +import com.wonu606.vouchermanager.repository.customer.query.CustomerCreateQuery; +import com.wonu606.vouchermanager.repository.customer.resultset.CustomerCreateResultSet; +import com.wonu606.vouchermanager.service.customer.result.CustomerCreateResult; +import org.springframework.core.convert.converter.Converter; + +public class CustomerCreateResultConverter implements Converter { + + @Override + public CustomerCreateResult convert(CustomerCreateResultSet resultSet) { + return new CustomerCreateResult(resultSet.getTaskSuccess() == 1); + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/converter/CustomerResultConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/converter/CustomerResultConverter.java new file mode 100644 index 0000000000..7ec19db110 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/converter/CustomerResultConverter.java @@ -0,0 +1,13 @@ +package com.wonu606.vouchermanager.service.customer.converter; + +import com.wonu606.vouchermanager.repository.customer.resultset.CustomerResultSet; +import com.wonu606.vouchermanager.service.customer.result.CustomerResult; +import org.springframework.core.convert.converter.Converter; + +public class CustomerResultConverter implements Converter { + + @Override + public CustomerResult convert(CustomerResultSet resultSet) { + return new CustomerResult(resultSet.getEmail(), resultSet.getNickname()); + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/result/CustomerCreateResult.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/result/CustomerCreateResult.java index 0eec80d8cc..eb0dd94710 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/result/CustomerCreateResult.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/result/CustomerCreateResult.java @@ -2,4 +2,13 @@ public class CustomerCreateResult { + private final boolean taskSuccess; + + public CustomerCreateResult(boolean taskSuccess) { + this.taskSuccess = taskSuccess; + } + + public boolean isTaskSuccess() { + return taskSuccess; + } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/result/CustomerResult.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/result/CustomerResult.java new file mode 100644 index 0000000000..d69033458a --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/result/CustomerResult.java @@ -0,0 +1,20 @@ +package com.wonu606.vouchermanager.service.customer.result; + +public class CustomerResult { + + private final String email; + private final String nickname; + + public CustomerResult(String email, String nickname) { + this.email = email; + this.nickname = nickname; + } + + public String getEmail() { + return email; + } + + public String getNickname() { + return nickname; + } +} From 8f6e04ec31ed2272f3d6e60482bfc3f807764027 Mon Sep 17 00:00:00 2001 From: wonu606 Date: Wed, 19 Jul 2023 16:37:36 +0900 Subject: [PATCH 16/37] =?UTF-8?q?feat:=20CustomerController=EC=9D=98=20DTO?= =?UTF-8?q?=20Converters=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../customer/CustomerControllerCable.java | 6 +-- .../customer/io/CustomerConsoleIo.java | 4 +- .../customer/CustomerController.java | 54 +++++++++++-------- .../CustomerCreateParamConverter.java | 3 +- .../CustomerCreateResponseConverter.java | 10 +++- .../CustomerListResponseConverter.java | 5 -- .../converter/CustomerResponseConverter.java | 13 +++++ .../OwnedVoucherResponseConverter.java | 10 +++- ....java => OwnedVouchersParamConverter.java} | 8 +-- .../converter/WalletDeleteParamConverter.java | 23 ++++---- .../response/CustomerCreateResponse.java | 16 ++---- .../response/CustomerListGetResponse.java | 16 ------ .../response/OwnedVoucherResponse.java | 14 +++++ .../response/OwnedVouchersResponse.java | 16 ------ .../service/customer/CustomerService.java | 4 +- .../voucherwallet/VoucherWalletService.java | 4 +- .../converter/OwnedVoucherQueryConverter.java | 6 +-- ...cherParam.java => OwnedVouchersParam.java} | 4 +- 18 files changed, 110 insertions(+), 106 deletions(-) delete mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/CustomerListResponseConverter.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/CustomerResponseConverter.java rename voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/{OwnedVoucherParamConverter.java => OwnedVouchersParamConverter.java} (53%) delete mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/response/CustomerListGetResponse.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/response/OwnedVoucherResponse.java delete mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/response/OwnedVouchersResponse.java rename voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/param/{OwnedVoucherParam.java => OwnedVouchersParam.java} (70%) diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/customer/CustomerControllerCable.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/customer/CustomerControllerCable.java index 6387c17f6d..8180e798a9 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/customer/CustomerControllerCable.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/customer/CustomerControllerCable.java @@ -5,7 +5,7 @@ import com.wonu606.vouchermanager.controller.customer.request.CustomerCreateRequest; import com.wonu606.vouchermanager.controller.customer.request.OwnedVouchersRequest; import com.wonu606.vouchermanager.controller.customer.request.WalletDeleteRequest; -import com.wonu606.vouchermanager.controller.customer.response.OwnedVouchersResponse; +import com.wonu606.vouchermanager.controller.customer.response.OwnedVoucherResponse; import com.wonu606.vouchermanager.controller.customer.response.CustomerListGetResponse; import org.springframework.stereotype.Component; @@ -49,9 +49,9 @@ private void executeMenuAction(CustomerControllerMenu menu) { case VOUCHER_LIST: String searchedCustomerId = consoleIo.readString("CustomerId"); - OwnedVouchersResponse ownedVouchersResponse = controller.getOwnedVouchersByCustomer( + OwnedVoucherResponse ownedVoucherResponse = controller.getOwnedVouchersByCustomer( new OwnedVouchersRequest(searchedCustomerId)); - consoleIo.displayVoucherList(ownedVouchersResponse); + consoleIo.displayVoucherList(ownedVoucherResponse); return; case DELETE: diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/customer/io/CustomerConsoleIo.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/customer/io/CustomerConsoleIo.java index 1e669265ba..bdce5357ea 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/customer/io/CustomerConsoleIo.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/customer/io/CustomerConsoleIo.java @@ -4,7 +4,7 @@ import com.wonu606.vouchermanager.console.ConsoleInput; import com.wonu606.vouchermanager.console.ConsolePrinter; import com.wonu606.vouchermanager.console.controllercable.customer.CustomerControllerMenu; -import com.wonu606.vouchermanager.controller.customer.response.OwnedVouchersResponse; +import com.wonu606.vouchermanager.controller.customer.response.OwnedVoucherResponse; import com.wonu606.vouchermanager.controller.customer.response.CustomerListGetResponse; import java.util.List; import org.springframework.stereotype.Component; @@ -35,7 +35,7 @@ public void displayCustomerList(CustomerListGetResponse response) { emails.forEach(printer::displayMessage); } - public void displayVoucherList(OwnedVouchersResponse response) { + public void displayVoucherList(OwnedVoucherResponse response) { printer.displayMessage("=== 보유한 바우처 리스트 ==="); List voucherIds = response.getVoucherIds(); voucherIds.forEach(printer::displayMessage); diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/CustomerController.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/CustomerController.java index 80e79b048d..478a2aa1b9 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/CustomerController.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/CustomerController.java @@ -2,21 +2,25 @@ import com.wonu606.vouchermanager.controller.customer.converter.CustomerCreateParamConverter; import com.wonu606.vouchermanager.controller.customer.converter.CustomerCreateResponseConverter; -import com.wonu606.vouchermanager.controller.customer.converter.CustomerListResponseConverter; -import com.wonu606.vouchermanager.controller.customer.converter.OwnedVoucherParamConverter; +import com.wonu606.vouchermanager.controller.customer.converter.CustomerResponseConverter; import com.wonu606.vouchermanager.controller.customer.converter.OwnedVoucherResponseConverter; +import com.wonu606.vouchermanager.controller.customer.converter.OwnedVouchersParamConverter; import com.wonu606.vouchermanager.controller.customer.converter.WalletDeleteParamConverter; import com.wonu606.vouchermanager.controller.customer.request.CustomerCreateRequest; import com.wonu606.vouchermanager.controller.customer.request.OwnedVouchersRequest; import com.wonu606.vouchermanager.controller.customer.request.WalletDeleteRequest; import com.wonu606.vouchermanager.controller.customer.response.CustomerCreateResponse; -import com.wonu606.vouchermanager.controller.customer.response.CustomerListGetResponse; -import com.wonu606.vouchermanager.controller.customer.response.OwnedVouchersResponse; +import com.wonu606.vouchermanager.controller.customer.response.CustomerResponse; +import com.wonu606.vouchermanager.controller.customer.response.OwnedVoucherResponse; import com.wonu606.vouchermanager.service.customer.CustomerService; import com.wonu606.vouchermanager.service.customer.param.CustomerCreateParam; -import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedVoucherParam; -import com.wonu606.vouchermanager.service.voucherwallet.param.WalletDeleteParam; import com.wonu606.vouchermanager.service.customer.result.CustomerCreateResult; +import com.wonu606.vouchermanager.service.customer.result.CustomerResult; +import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedVouchersParam; +import com.wonu606.vouchermanager.service.voucherwallet.param.WalletDeleteParam; +import com.wonu606.vouchermanager.service.voucherwallet.result.OwnedVoucherResult; +import java.util.List; +import java.util.stream.Collectors; import org.springframework.stereotype.Component; @Component @@ -25,21 +29,21 @@ public class CustomerController { private final CustomerService service; private final CustomerCreateParamConverter customerCreateParamConverter; - private final OwnedVoucherParamConverter ownedVoucherParamConverter; - private final WalletDeleteParamConverter walletDeleteParamConverter; private final CustomerCreateResponseConverter customerCreateResponseConverter; - private final CustomerListResponseConverter customerListResponseConverter; - private final OwnedVoucherResponseConverter ownedVouchersResponseConverter; + private final CustomerResponseConverter customerResponseConverter; + private final OwnedVouchersParamConverter ownedVouchersParamConverter; + private final OwnedVoucherResponseConverter ownedVoucherResponseConverter; + private final WalletDeleteParamConverter walletDeleteParamConverter; public CustomerController(CustomerService service) { this.service = service; - this.customerCreateParamConverter = new CustomerCreateParamConverter(); - this.ownedVoucherParamConverter = new OwnedVoucherParamConverter(); - this.walletDeleteParamConverter = new WalletDeleteParamConverter(); - this.customerCreateResponseConverter = new CustomerCreateResponseConverter(); - this.customerListResponseConverter = new CustomerListResponseConverter(); - this.ownedVouchersResponseConverter = new OwnedVoucherResponseConverter(); + customerCreateParamConverter = new CustomerCreateParamConverter(); + customerCreateResponseConverter = new CustomerCreateResponseConverter(); + customerResponseConverter = new CustomerResponseConverter(); + ownedVouchersParamConverter = new OwnedVouchersParamConverter(); + ownedVoucherResponseConverter = new OwnedVoucherResponseConverter(); + walletDeleteParamConverter = new WalletDeleteParamConverter(); } public CustomerCreateResponse createCustomer(CustomerCreateRequest request) { @@ -49,17 +53,21 @@ public CustomerCreateResponse createCustomer(CustomerCreateRequest request) { return customerCreateResponseConverter.convert(result); } - public CustomerListGetResponse getCustomerList() { - CustomerListResult result = service.getCustomerList(); + public List getCustomerList() { + List results = service.getCustomerList(); - return customerListResponseConverter.convert(result); + return results.stream() + .map(customerResponseConverter::convert) + .collect(Collectors.toList()); } - public OwnedVouchersResponse getOwnedVouchersByCustomer(OwnedVouchersRequest request) { - OwnedVoucherParam param = ownedVoucherParamConverter.convert(request); - OwnedVoucherResult result = service.findOwnedVouchersByCustomer(param); + public List getOwnedVouchersByCustomer(OwnedVouchersRequest request) { + OwnedVouchersParam param = ownedVouchersParamConverter.convert(request); + List results = service.findOwnedVouchersByCustomer(param); - return ownedVouchersResponseConverter.convert(result); + return results.stream() + .map(ownedVoucherResponseConverter::convert) + .collect(Collectors.toList()); } public void deleteWallet(WalletDeleteRequest request) { diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/CustomerCreateParamConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/CustomerCreateParamConverter.java index 51db3074be..b85ee6bbbd 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/CustomerCreateParamConverter.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/CustomerCreateParamConverter.java @@ -2,8 +2,9 @@ import com.wonu606.vouchermanager.controller.customer.request.CustomerCreateRequest; import com.wonu606.vouchermanager.service.customer.param.CustomerCreateParam; +import org.springframework.core.convert.converter.Converter; -public class CustomerCreateParamConverter { +public class CustomerCreateParamConverter implements Converter { public CustomerCreateParam convert(CustomerCreateRequest request) { return new CustomerCreateParam(request.getEmail(), request.getNickname()); diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/CustomerCreateResponseConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/CustomerCreateResponseConverter.java index 3a1b36ee4e..e6754c6cb2 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/CustomerCreateResponseConverter.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/CustomerCreateResponseConverter.java @@ -1,5 +1,13 @@ package com.wonu606.vouchermanager.controller.customer.converter; -public class CustomerCreateResponseConverter { +import com.wonu606.vouchermanager.controller.customer.response.CustomerCreateResponse; +import com.wonu606.vouchermanager.service.customer.result.CustomerCreateResult; +import org.springframework.core.convert.converter.Converter; +public class CustomerCreateResponseConverter implements Converter { + + @Override + public CustomerCreateResponse convert(CustomerCreateResult result) { + return new CustomerCreateResponse(result.isTaskSuccess()); + } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/CustomerListResponseConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/CustomerListResponseConverter.java deleted file mode 100644 index 50df26ddea..0000000000 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/CustomerListResponseConverter.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.wonu606.vouchermanager.controller.customer.converter; - -public class CustomerListResponseConverter { - -} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/CustomerResponseConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/CustomerResponseConverter.java new file mode 100644 index 0000000000..6fe740ab91 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/CustomerResponseConverter.java @@ -0,0 +1,13 @@ +package com.wonu606.vouchermanager.controller.customer.converter; + +import com.wonu606.vouchermanager.controller.customer.response.CustomerResponse; +import com.wonu606.vouchermanager.service.customer.result.CustomerResult; +import org.springframework.core.convert.converter.Converter; + +public class CustomerResponseConverter implements Converter { + + @Override + public CustomerResponse convert(CustomerResult result) { + return new CustomerResponse(result.getEmail(), result.getNickname()); + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/OwnedVoucherResponseConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/OwnedVoucherResponseConverter.java index 94e0ee4b0c..05dee92403 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/OwnedVoucherResponseConverter.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/OwnedVoucherResponseConverter.java @@ -1,5 +1,13 @@ package com.wonu606.vouchermanager.controller.customer.converter; -public class OwnedVoucherResponseConverter { +import com.wonu606.vouchermanager.controller.customer.response.OwnedVoucherResponse; +import com.wonu606.vouchermanager.service.voucherwallet.result.OwnedVoucherResult; +import org.springframework.core.convert.converter.Converter; +public class OwnedVoucherResponseConverter implements Converter { + + @Override + public OwnedVoucherResponse convert(OwnedVoucherResult result) { + return new OwnedVoucherResponse(result.getVoucherUuid()); + } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/OwnedVoucherParamConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/OwnedVouchersParamConverter.java similarity index 53% rename from voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/OwnedVoucherParamConverter.java rename to voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/OwnedVouchersParamConverter.java index e749eec5e0..dba152bf6a 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/OwnedVoucherParamConverter.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/OwnedVouchersParamConverter.java @@ -1,11 +1,11 @@ package com.wonu606.vouchermanager.controller.customer.converter; import com.wonu606.vouchermanager.controller.customer.request.OwnedVouchersRequest; -import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedVoucherParam; +import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedVouchersParam; -public class OwnedVoucherParamConverter { +public class OwnedVouchersParamConverter { - public OwnedVoucherParam convert(OwnedVouchersRequest request) { - return new OwnedVoucherParam(request.getCustomerId()); + public OwnedVouchersParam convert(OwnedVouchersRequest request) { + return new OwnedVouchersParam(request.getCustomerId()); } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/WalletDeleteParamConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/WalletDeleteParamConverter.java index 54a6c0f923..7585b236c3 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/WalletDeleteParamConverter.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/WalletDeleteParamConverter.java @@ -1,21 +1,16 @@ package com.wonu606.vouchermanager.controller.customer.converter; +import com.wonu606.vouchermanager.controller.customer.request.WalletDeleteRequest; +import com.wonu606.vouchermanager.service.voucherwallet.param.WalletDeleteParam; import java.util.UUID; +import org.springframework.core.convert.converter.Converter; -public class WalletDeleteParamConverter { - private final UUID voucherUuid; - private final String customerEmail; +public class WalletDeleteParamConverter implements + Converter { - public WalletDeleteParamConverter(UUID voucherUuid, String customerEmail) { - this.voucherUuid = voucherUuid; - this.customerEmail = customerEmail; - } - - public UUID getVoucherUuid() { - return voucherUuid; - } - - public String getCustomerEmail() { - return customerEmail; + @Override + public WalletDeleteParam convert(WalletDeleteRequest request) { + return new WalletDeleteParam(UUID.fromString(request.getVoucherId()), + request.getCustomerId()); } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/response/CustomerCreateResponse.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/response/CustomerCreateResponse.java index 5a7fbfb6d5..ada797a34f 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/response/CustomerCreateResponse.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/response/CustomerCreateResponse.java @@ -2,19 +2,13 @@ public class CustomerCreateResponse { - private final String email; - private final String nickname; + private final Boolean success; - public CustomerCreateResponse(String email, String nickname) { - this.email = email; - this.nickname = nickname; + public CustomerCreateResponse(Boolean success) { + this.success = success; } - public String getEmail() { - return email; - } - - public String getNickname() { - return nickname; + public Boolean getSuccess() { + return success; } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/response/CustomerListGetResponse.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/response/CustomerListGetResponse.java deleted file mode 100644 index 4303861fa7..0000000000 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/response/CustomerListGetResponse.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.wonu606.vouchermanager.controller.customer.response; - -import java.util.List; - -public class CustomerListGetResponse { - - private final List emails; - - public CustomerListGetResponse(List emails) { - this.emails = emails; - } - - public List getEmails() { - return emails; - } -} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/response/OwnedVoucherResponse.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/response/OwnedVoucherResponse.java new file mode 100644 index 0000000000..57cb30e81c --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/response/OwnedVoucherResponse.java @@ -0,0 +1,14 @@ +package com.wonu606.vouchermanager.controller.customer.response; + +public class OwnedVoucherResponse { + + private final String voucherId; + + public OwnedVoucherResponse(String voucherId) { + this.voucherId = voucherId; + } + + public String getVoucherId() { + return voucherId; + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/response/OwnedVouchersResponse.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/response/OwnedVouchersResponse.java deleted file mode 100644 index 30e4e5c0fc..0000000000 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/response/OwnedVouchersResponse.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.wonu606.vouchermanager.controller.customer.response; - -import java.util.List; - -public class OwnedVouchersResponse { - - private final List voucherIds; - - public OwnedVouchersResponse(List voucherId) { - this.voucherIds = voucherId; - } - - public List getVoucherIds() { - return voucherIds; - } -} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/CustomerService.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/CustomerService.java index f651e2b6fd..5502ee95fb 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/CustomerService.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/CustomerService.java @@ -13,7 +13,7 @@ import com.wonu606.vouchermanager.service.customer.result.CustomerCreateResult; import com.wonu606.vouchermanager.service.customer.result.CustomerResult; import com.wonu606.vouchermanager.service.voucherwallet.VoucherWalletService; -import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedVoucherParam; +import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedVouchersParam; import com.wonu606.vouchermanager.service.voucherwallet.param.WalletDeleteParam; import com.wonu606.vouchermanager.service.voucherwallet.result.OwnedVoucherResult; import java.util.List; @@ -61,7 +61,7 @@ public List getCustomerList() { .collect(Collectors.toList()); } - public List findOwnedVouchersByCustomer(OwnedVoucherParam param) { + public List findOwnedVouchersByCustomer(OwnedVouchersParam param) { return voucherWalletService.findOwnedVouchersByCustomer(param); } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/VoucherWalletService.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/VoucherWalletService.java index 4a71222fee..6dbb8eb2f4 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/VoucherWalletService.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/VoucherWalletService.java @@ -16,7 +16,7 @@ import com.wonu606.vouchermanager.service.voucherwallet.converter.WalletInsertQueryConverter; import com.wonu606.vouchermanager.service.voucherwallet.converter.WalletInsertResultConverter; import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedCustomersParam; -import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedVoucherParam; +import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedVouchersParam; import com.wonu606.vouchermanager.service.voucherwallet.param.WalletAssignParam; import com.wonu606.vouchermanager.service.voucherwallet.param.WalletDeleteParam; import com.wonu606.vouchermanager.service.voucherwallet.result.OwnedCustomerResult; @@ -54,7 +54,7 @@ public VoucherWalletService(VoucherWalletRepository voucherWalletRepository) { ownedCustomersResultConverter = new OwnedCustomersResultConverter(); } - public List findOwnedVouchersByCustomer(OwnedVoucherParam param) { + public List findOwnedVouchersByCustomer(OwnedVouchersParam param) { OwnedVouchersQuery query = ownedVoucherQueryConverter.convert(param); List resultSets = voucherWalletRepository.findOwnedVouchersByCustomer(query); diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/OwnedVoucherQueryConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/OwnedVoucherQueryConverter.java index c960bc251e..a28e690eed 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/OwnedVoucherQueryConverter.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/OwnedVoucherQueryConverter.java @@ -1,12 +1,12 @@ package com.wonu606.vouchermanager.service.voucherwallet.converter; import com.wonu606.vouchermanager.repository.voucherwallet.query.OwnedVouchersQuery; -import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedVoucherParam; +import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedVouchersParam; import org.springframework.core.convert.converter.Converter; -public class OwnedVoucherQueryConverter implements Converter { +public class OwnedVoucherQueryConverter implements Converter { - public OwnedVouchersQuery convert(OwnedVoucherParam param) { + public OwnedVouchersQuery convert(OwnedVouchersParam param) { return new OwnedVouchersQuery(param.getEmail()); } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/param/OwnedVoucherParam.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/param/OwnedVouchersParam.java similarity index 70% rename from voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/param/OwnedVoucherParam.java rename to voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/param/OwnedVouchersParam.java index 367dd36a0a..067c83ce93 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/param/OwnedVoucherParam.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/param/OwnedVouchersParam.java @@ -1,10 +1,10 @@ package com.wonu606.vouchermanager.service.voucherwallet.param; -public class OwnedVoucherParam { +public class OwnedVouchersParam { private final String email; - public OwnedVoucherParam(String email) { + public OwnedVouchersParam(String email) { this.email = email; } From 66b3d0e01448f556821639ce0fb0e1d00ea33333 Mon Sep 17 00:00:00 2001 From: wonu606 Date: Wed, 19 Jul 2023 20:35:29 +0900 Subject: [PATCH 17/37] =?UTF-8?q?reafactor:=20CustomerController=EC=97=90?= =?UTF-8?q?=EC=84=9C=20CustomerControllerConverterManager=EB=A5=BC=20?= =?UTF-8?q?=ED=86=B5=ED=95=B4=20Convert=ED=95=98=EB=8F=84=EB=A1=9D=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../customer/CustomerController.java | 35 +++++-------------- .../CustomerControllerConverterManager.java | 31 ++++++++++++++++ .../CustomerCreateParamConverter.java | 15 ++++++-- .../CustomerCreateResponseConverter.java | 14 +++++++- .../converter/CustomerResponseConverter.java | 14 ++++++-- .../OwnedVoucherResponseConverter.java | 15 ++++++-- .../OwnedVouchersParamConverter.java | 15 +++++++- .../converter/WalletDeleteParamConverter.java | 13 ++++++- .../vouchermanager/util/TypedConverter.java | 12 +++++++ 9 files changed, 129 insertions(+), 35 deletions(-) create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/CustomerControllerConverterManager.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/util/TypedConverter.java diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/CustomerController.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/CustomerController.java index 478a2aa1b9..e0f1f27955 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/CustomerController.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/CustomerController.java @@ -1,11 +1,6 @@ package com.wonu606.vouchermanager.controller.customer; -import com.wonu606.vouchermanager.controller.customer.converter.CustomerCreateParamConverter; -import com.wonu606.vouchermanager.controller.customer.converter.CustomerCreateResponseConverter; -import com.wonu606.vouchermanager.controller.customer.converter.CustomerResponseConverter; -import com.wonu606.vouchermanager.controller.customer.converter.OwnedVoucherResponseConverter; -import com.wonu606.vouchermanager.controller.customer.converter.OwnedVouchersParamConverter; -import com.wonu606.vouchermanager.controller.customer.converter.WalletDeleteParamConverter; +import com.wonu606.vouchermanager.controller.customer.converter.CustomerControllerConverterManager; import com.wonu606.vouchermanager.controller.customer.request.CustomerCreateRequest; import com.wonu606.vouchermanager.controller.customer.request.OwnedVouchersRequest; import com.wonu606.vouchermanager.controller.customer.request.WalletDeleteRequest; @@ -27,51 +22,39 @@ public class CustomerController { private final CustomerService service; - - private final CustomerCreateParamConverter customerCreateParamConverter; - private final CustomerCreateResponseConverter customerCreateResponseConverter; - private final CustomerResponseConverter customerResponseConverter; - private final OwnedVouchersParamConverter ownedVouchersParamConverter; - private final OwnedVoucherResponseConverter ownedVoucherResponseConverter; - private final WalletDeleteParamConverter walletDeleteParamConverter; + private final CustomerControllerConverterManager converterManager; public CustomerController(CustomerService service) { this.service = service; - - customerCreateParamConverter = new CustomerCreateParamConverter(); - customerCreateResponseConverter = new CustomerCreateResponseConverter(); - customerResponseConverter = new CustomerResponseConverter(); - ownedVouchersParamConverter = new OwnedVouchersParamConverter(); - ownedVoucherResponseConverter = new OwnedVoucherResponseConverter(); - walletDeleteParamConverter = new WalletDeleteParamConverter(); + converterManager = new CustomerControllerConverterManager(); } public CustomerCreateResponse createCustomer(CustomerCreateRequest request) { - CustomerCreateParam param = customerCreateParamConverter.convert(request); + CustomerCreateParam param = converterManager.convert(request, CustomerCreateParam.class); CustomerCreateResult result = service.createCustomer(param); - return customerCreateResponseConverter.convert(result); + return converterManager.convert(result, CustomerCreateResponse.class); } public List getCustomerList() { List results = service.getCustomerList(); return results.stream() - .map(customerResponseConverter::convert) + .map(rs -> converterManager.convert(rs, CustomerResponse.class)) .collect(Collectors.toList()); } public List getOwnedVouchersByCustomer(OwnedVouchersRequest request) { - OwnedVouchersParam param = ownedVouchersParamConverter.convert(request); + OwnedVouchersParam param = converterManager.convert(request, OwnedVouchersParam.class); List results = service.findOwnedVouchersByCustomer(param); return results.stream() - .map(ownedVoucherResponseConverter::convert) + .map(rs -> converterManager.convert(rs, OwnedVoucherResponse.class)) .collect(Collectors.toList()); } public void deleteWallet(WalletDeleteRequest request) { - WalletDeleteParam param = walletDeleteParamConverter.convert(request); + WalletDeleteParam param = converterManager.convert(request, WalletDeleteParam.class); service.deleteWallet(param); } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/CustomerControllerConverterManager.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/CustomerControllerConverterManager.java new file mode 100644 index 0000000000..1a06cac06c --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/CustomerControllerConverterManager.java @@ -0,0 +1,31 @@ +package com.wonu606.vouchermanager.controller.customer.converter; + +import com.wonu606.vouchermanager.util.TypedConverter; +import java.util.ArrayList; +import java.util.List; + +public class CustomerControllerConverterManager { + + private final List> converterList; + + public CustomerControllerConverterManager() { + converterList = new ArrayList<>(); + converterList.add(new CustomerCreateParamConverter()); + converterList.add(new CustomerCreateResponseConverter()); + converterList.add(new CustomerResponseConverter()); + converterList.add(new OwnedVouchersParamConverter()); + converterList.add(new OwnedVoucherResponseConverter()); + converterList.add(new WalletDeleteParamConverter()); + } + + @SuppressWarnings("unchecked") + public T convert(S source, Class targetType) { + for (TypedConverter converter : converterList) { + if (converter.canConvert(source.getClass(), targetType)) { + return ((TypedConverter) converter).convert(source); + } + } + throw new IllegalArgumentException( + source.getClass() + "타입을 " + targetType + "로 변환할 수 없습니다."); + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/CustomerCreateParamConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/CustomerCreateParamConverter.java index b85ee6bbbd..4445bfb155 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/CustomerCreateParamConverter.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/CustomerCreateParamConverter.java @@ -2,11 +2,22 @@ import com.wonu606.vouchermanager.controller.customer.request.CustomerCreateRequest; import com.wonu606.vouchermanager.service.customer.param.CustomerCreateParam; -import org.springframework.core.convert.converter.Converter; +import com.wonu606.vouchermanager.util.TypedConverter; -public class CustomerCreateParamConverter implements Converter { +public class CustomerCreateParamConverter implements + TypedConverter { public CustomerCreateParam convert(CustomerCreateRequest request) { return new CustomerCreateParam(request.getEmail(), request.getNickname()); } + + @Override + public Class getSourceType() { + return CustomerCreateRequest.class; + } + + @Override + public Class getTargetType() { + return CustomerCreateParam.class; + } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/CustomerCreateResponseConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/CustomerCreateResponseConverter.java index e6754c6cb2..3fe50a1595 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/CustomerCreateResponseConverter.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/CustomerCreateResponseConverter.java @@ -2,12 +2,24 @@ import com.wonu606.vouchermanager.controller.customer.response.CustomerCreateResponse; import com.wonu606.vouchermanager.service.customer.result.CustomerCreateResult; +import com.wonu606.vouchermanager.util.TypedConverter; import org.springframework.core.convert.converter.Converter; -public class CustomerCreateResponseConverter implements Converter { +public class CustomerCreateResponseConverter implements + TypedConverter { @Override public CustomerCreateResponse convert(CustomerCreateResult result) { return new CustomerCreateResponse(result.isTaskSuccess()); } + + @Override + public Class getSourceType() { + return CustomerCreateResult.class; + } + + @Override + public Class getTargetType() { + return CustomerCreateResponse.class; + } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/CustomerResponseConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/CustomerResponseConverter.java index 6fe740ab91..d9807d654e 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/CustomerResponseConverter.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/CustomerResponseConverter.java @@ -2,12 +2,22 @@ import com.wonu606.vouchermanager.controller.customer.response.CustomerResponse; import com.wonu606.vouchermanager.service.customer.result.CustomerResult; -import org.springframework.core.convert.converter.Converter; +import com.wonu606.vouchermanager.util.TypedConverter; -public class CustomerResponseConverter implements Converter { +public class CustomerResponseConverter implements TypedConverter { @Override public CustomerResponse convert(CustomerResult result) { return new CustomerResponse(result.getEmail(), result.getNickname()); } + + @Override + public Class getSourceType() { + return CustomerResult.class; + } + + @Override + public Class getTargetType() { + return CustomerResponse.class; + } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/OwnedVoucherResponseConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/OwnedVoucherResponseConverter.java index 05dee92403..e0ee35b70a 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/OwnedVoucherResponseConverter.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/OwnedVoucherResponseConverter.java @@ -2,12 +2,23 @@ import com.wonu606.vouchermanager.controller.customer.response.OwnedVoucherResponse; import com.wonu606.vouchermanager.service.voucherwallet.result.OwnedVoucherResult; -import org.springframework.core.convert.converter.Converter; +import com.wonu606.vouchermanager.util.TypedConverter; -public class OwnedVoucherResponseConverter implements Converter { +public class OwnedVoucherResponseConverter implements + TypedConverter { @Override public OwnedVoucherResponse convert(OwnedVoucherResult result) { return new OwnedVoucherResponse(result.getVoucherUuid()); } + + @Override + public Class getSourceType() { + return OwnedVoucherResult.class; + } + + @Override + public Class getTargetType() { + return OwnedVoucherResponse.class; + } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/OwnedVouchersParamConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/OwnedVouchersParamConverter.java index dba152bf6a..378839cc01 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/OwnedVouchersParamConverter.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/OwnedVouchersParamConverter.java @@ -2,10 +2,23 @@ import com.wonu606.vouchermanager.controller.customer.request.OwnedVouchersRequest; import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedVouchersParam; +import com.wonu606.vouchermanager.util.TypedConverter; +import org.springframework.core.convert.converter.Converter; -public class OwnedVouchersParamConverter { +public class OwnedVouchersParamConverter implements + TypedConverter { public OwnedVouchersParam convert(OwnedVouchersRequest request) { return new OwnedVouchersParam(request.getCustomerId()); } + + @Override + public Class getSourceType() { + return OwnedVouchersRequest.class; + } + + @Override + public Class getTargetType() { + return OwnedVouchersParam.class; + } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/WalletDeleteParamConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/WalletDeleteParamConverter.java index 7585b236c3..31993c31b2 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/WalletDeleteParamConverter.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/WalletDeleteParamConverter.java @@ -2,15 +2,26 @@ import com.wonu606.vouchermanager.controller.customer.request.WalletDeleteRequest; import com.wonu606.vouchermanager.service.voucherwallet.param.WalletDeleteParam; +import com.wonu606.vouchermanager.util.TypedConverter; import java.util.UUID; import org.springframework.core.convert.converter.Converter; public class WalletDeleteParamConverter implements - Converter { + TypedConverter { @Override public WalletDeleteParam convert(WalletDeleteRequest request) { return new WalletDeleteParam(UUID.fromString(request.getVoucherId()), request.getCustomerId()); } + + @Override + public Class getSourceType() { + return WalletDeleteRequest.class; + } + + @Override + public Class getTargetType() { + return WalletDeleteParam.class; + } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/util/TypedConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/util/TypedConverter.java new file mode 100644 index 0000000000..0f6f85da5e --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/util/TypedConverter.java @@ -0,0 +1,12 @@ +package com.wonu606.vouchermanager.util; + +import org.springframework.core.convert.converter.Converter; + +public interface TypedConverter extends Converter { + Class getSourceType(); + Class getTargetType(); + + default boolean canConvert(Class sourceType, Class targetType) { + return getSourceType() == sourceType && getTargetType() == targetType; + } +} From b88c12e3cb83aa6d8201c10e35314b86db9a6941 Mon Sep 17 00:00:00 2001 From: wonu606 Date: Wed, 19 Jul 2023 21:42:14 +0900 Subject: [PATCH 18/37] =?UTF-8?q?refactor:=20VoucherController=EC=97=90?= =?UTF-8?q?=EC=84=9C=20ConverterManager=EB=A5=BC=20=ED=86=B5=ED=95=B4=20co?= =?UTF-8?q?nvert=ED=95=98=EB=8F=84=EB=A1=9D=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/voucher/VoucherController.java | 39 +++++-------------- .../OwnedCustomerResponseConverter.java | 14 ++++++- .../OwnedCustomersParamConverter.java | 15 ++++++- .../VoucherControllerConverterManager.java | 31 +++++++++++++++ .../VoucherCreateParamConverter.java | 14 ++++++- .../VoucherCreateResponseConverter.java | 14 ++++++- .../converter/VoucherResponseConverter.java | 13 ++++++- .../converter/WalletAssignParamConverter.java | 14 ++++++- 8 files changed, 119 insertions(+), 35 deletions(-) create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/VoucherControllerConverterManager.java diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/VoucherController.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/VoucherController.java index 33b2a9877d..c4bef4d765 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/VoucherController.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/VoucherController.java @@ -1,11 +1,6 @@ package com.wonu606.vouchermanager.controller.voucher; -import com.wonu606.vouchermanager.controller.voucher.converter.OwnedCustomerResponseConverter; -import com.wonu606.vouchermanager.controller.voucher.converter.OwnedCustomersParamConverter; -import com.wonu606.vouchermanager.controller.voucher.converter.VoucherCreateParamConverter; -import com.wonu606.vouchermanager.controller.voucher.converter.VoucherCreateResponseConverter; -import com.wonu606.vouchermanager.controller.voucher.converter.VoucherResponseConverter; -import com.wonu606.vouchermanager.controller.voucher.converter.WalletAssignParamConverter; +import com.wonu606.vouchermanager.controller.voucher.converter.VoucherControllerConverterManager; import com.wonu606.vouchermanager.controller.voucher.reqeust.OwnedCustomersRequest; import com.wonu606.vouchermanager.controller.voucher.reqeust.VoucherCreateRequest; import com.wonu606.vouchermanager.controller.voucher.reqeust.WalletAssignRequest; @@ -19,7 +14,6 @@ import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedCustomersParam; import com.wonu606.vouchermanager.service.voucherwallet.param.WalletAssignParam; import com.wonu606.vouchermanager.service.voucherwallet.result.OwnedCustomerResult; -import com.wonu606.vouchermanager.service.voucherwallet.result.WalletAssignResult; import java.util.List; import java.util.stream.Collectors; import org.springframework.stereotype.Component; @@ -28,52 +22,39 @@ public class VoucherController { private final VoucherService service; - - - private final VoucherCreateParamConverter voucherCreateParamConverter; - private final VoucherCreateResponseConverter voucherCreateResponseConverter; - private final VoucherResponseConverter voucherResponseConverter; - private final OwnedCustomersParamConverter ownedCustomersParamConverter; - private final OwnedCustomerResponseConverter ownedCustomerResponseConverter; - private final WalletAssignParamConverter walletAssignParamConverter; + private final VoucherControllerConverterManager converterManager; public VoucherController(VoucherService service) { this.service = service; - - voucherCreateParamConverter = new VoucherCreateParamConverter(); - voucherCreateResponseConverter = new VoucherCreateResponseConverter(); - voucherResponseConverter = new VoucherResponseConverter(); - ownedCustomersParamConverter = new OwnedCustomersParamConverter(); - ownedCustomerResponseConverter = new OwnedCustomerResponseConverter(); - walletAssignParamConverter = new WalletAssignParamConverter(); + converterManager = new VoucherControllerConverterManager(); } public VoucherCreateResponse createVoucher(VoucherCreateRequest request) { - VoucherCreateParam param = voucherCreateParamConverter.convert(request); + VoucherCreateParam param = converterManager.convert(request, VoucherCreateParam.class); VoucherCreateResult result = service.createVoucher(param); - return voucherCreateResponseConverter.convert(result); + return converterManager.convert(result, VoucherCreateResponse.class); } public List getVoucherList() { List results = service.getVoucherList(); return results.stream() - .map(voucherResponseConverter::convert) + .map(rs -> converterManager.convert(rs, VoucherResponse.class)) .collect(Collectors.toList()); } public List getOwnedCustomersByVoucher(OwnedCustomersRequest request) { - OwnedCustomersParam param = ownedCustomersParamConverter.convert(request); + OwnedCustomersParam param = converterManager.convert(request, OwnedCustomersParam.class); List results = service.findOwnedCustomersByVoucher(param); return results.stream() - .map(ownedCustomerResponseConverter::convert) + .map(rs -> converterManager.convert(rs, OwnedCustomerResponse.class)) .collect(Collectors.toList()); } public void assignWallet(WalletAssignRequest request) { - WalletAssignParam param = walletAssignParamConverter.convert(request); - WalletAssignResult walletAssignResult = service.assignWallet(param); + WalletAssignParam param = converterManager.convert(request, WalletAssignParam.class); + service.assignWallet(param); } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/OwnedCustomerResponseConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/OwnedCustomerResponseConverter.java index 6d20ee575c..a5fd200038 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/OwnedCustomerResponseConverter.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/OwnedCustomerResponseConverter.java @@ -2,12 +2,24 @@ import com.wonu606.vouchermanager.controller.voucher.response.OwnedCustomerResponse; import com.wonu606.vouchermanager.service.voucherwallet.result.OwnedCustomerResult; +import com.wonu606.vouchermanager.util.TypedConverter; import org.springframework.core.convert.converter.Converter; -public class OwnedCustomerResponseConverter implements Converter { +public class OwnedCustomerResponseConverter implements + TypedConverter { @Override public OwnedCustomerResponse convert(OwnedCustomerResult result) { return new OwnedCustomerResponse(result.getCustomerEmail()); } + + @Override + public Class getSourceType() { + return OwnedCustomerResult.class; + } + + @Override + public Class getTargetType() { + return OwnedCustomerResponse.class; + } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/OwnedCustomersParamConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/OwnedCustomersParamConverter.java index 23a5b30155..2f21782fcb 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/OwnedCustomersParamConverter.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/OwnedCustomersParamConverter.java @@ -2,13 +2,26 @@ import com.wonu606.vouchermanager.controller.voucher.reqeust.OwnedCustomersRequest; import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedCustomersParam; +import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedVouchersParam; +import com.wonu606.vouchermanager.service.voucherwallet.result.OwnedCustomerResult; +import com.wonu606.vouchermanager.util.TypedConverter; import java.util.UUID; import org.springframework.core.convert.converter.Converter; -public class OwnedCustomersParamConverter implements Converter { +public class OwnedCustomersParamConverter implements TypedConverter { @Override public OwnedCustomersParam convert(OwnedCustomersRequest request) { return new OwnedCustomersParam(UUID.fromString(request.getVoucherId())); } + + @Override + public Class getSourceType() { + return OwnedCustomersRequest.class; + } + + @Override + public Class getTargetType() { + return OwnedCustomersParam.class; + } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/VoucherControllerConverterManager.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/VoucherControllerConverterManager.java new file mode 100644 index 0000000000..cdff1b6b26 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/VoucherControllerConverterManager.java @@ -0,0 +1,31 @@ +package com.wonu606.vouchermanager.controller.voucher.converter; + +import com.wonu606.vouchermanager.util.TypedConverter; +import java.util.ArrayList; +import java.util.List; + +public class VoucherControllerConverterManager { + + private final List> converterList; + + public VoucherControllerConverterManager() { + converterList = new ArrayList<>(); + converterList.add(new VoucherCreateParamConverter()); + converterList.add(new VoucherCreateResponseConverter()); + converterList.add(new VoucherResponseConverter()); + converterList.add(new OwnedCustomersParamConverter()); + converterList.add(new OwnedCustomerResponseConverter()); + converterList.add(new WalletAssignParamConverter()); + } + + @SuppressWarnings("unchecked") + public T convert(S source, Class targetType) { + for (TypedConverter converter : converterList) { + if (converter.canConvert(source.getClass(), targetType)) { + return ((TypedConverter) converter).convert(source); + } + } + throw new IllegalArgumentException( + source.getClass() + "타입을 " + targetType + "로 변환할 수 없습니다."); + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/VoucherCreateParamConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/VoucherCreateParamConverter.java index ee8b8f82ce..f4e864acaf 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/VoucherCreateParamConverter.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/VoucherCreateParamConverter.java @@ -2,12 +2,24 @@ import com.wonu606.vouchermanager.controller.voucher.reqeust.VoucherCreateRequest; import com.wonu606.vouchermanager.service.voucher.param.VoucherCreateParam; +import com.wonu606.vouchermanager.util.TypedConverter; import org.springframework.core.convert.converter.Converter; -public class VoucherCreateParamConverter implements Converter { +public class VoucherCreateParamConverter implements + TypedConverter { @Override public VoucherCreateParam convert(VoucherCreateRequest request) { return new VoucherCreateParam(request.getType(), request.getDiscountValue()); } + + @Override + public Class getSourceType() { + return VoucherCreateRequest.class; + } + + @Override + public Class getTargetType() { + return VoucherCreateParam.class; + } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/VoucherCreateResponseConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/VoucherCreateResponseConverter.java index f3b8c9b368..161f56f81e 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/VoucherCreateResponseConverter.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/VoucherCreateResponseConverter.java @@ -2,12 +2,24 @@ import com.wonu606.vouchermanager.controller.voucher.response.VoucherCreateResponse; import com.wonu606.vouchermanager.service.voucher.result.VoucherCreateResult; +import com.wonu606.vouchermanager.util.TypedConverter; import org.springframework.core.convert.converter.Converter; -public class VoucherCreateResponseConverter implements Converter { +public class VoucherCreateResponseConverter implements + TypedConverter { @Override public VoucherCreateResponse convert(VoucherCreateResult result) { return new VoucherCreateResponse(result.getTaskSuccess()); } + + @Override + public Class getSourceType() { + return VoucherCreateResult.class; + } + + @Override + public Class getTargetType() { + return VoucherCreateResponse.class; + } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/VoucherResponseConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/VoucherResponseConverter.java index e3235581fd..034203b24d 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/VoucherResponseConverter.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/VoucherResponseConverter.java @@ -2,12 +2,23 @@ import com.wonu606.vouchermanager.controller.voucher.response.VoucherResponse; import com.wonu606.vouchermanager.service.voucher.result.VoucherResult; +import com.wonu606.vouchermanager.util.TypedConverter; import org.springframework.core.convert.converter.Converter; -public class VoucherResponseConverter implements Converter { +public class VoucherResponseConverter implements TypedConverter { @Override public VoucherResponse convert(VoucherResult result) { return new VoucherResponse(result.getVoucherUuid()); } + + @Override + public Class getSourceType() { + return VoucherResult.class; + } + + @Override + public Class getTargetType() { + return VoucherResponse.class; + } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/WalletAssignParamConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/WalletAssignParamConverter.java index b962a4b3a4..8a0264c8bb 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/WalletAssignParamConverter.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/WalletAssignParamConverter.java @@ -2,13 +2,25 @@ import com.wonu606.vouchermanager.controller.voucher.reqeust.WalletAssignRequest; import com.wonu606.vouchermanager.service.voucherwallet.param.WalletAssignParam; +import com.wonu606.vouchermanager.util.TypedConverter; import java.util.UUID; import org.springframework.core.convert.converter.Converter; -public class WalletAssignParamConverter implements Converter { +public class WalletAssignParamConverter implements + TypedConverter { @Override public WalletAssignParam convert(WalletAssignRequest request) { return new WalletAssignParam(UUID.fromString(request.getVoucherId())); } + + @Override + public Class getSourceType() { + return WalletAssignRequest.class; + } + + @Override + public Class getTargetType() { + return WalletAssignParam.class; + } } From 487107c1458376bf21d070f2f2047ced91f62216 Mon Sep 17 00:00:00 2001 From: wonu606 Date: Wed, 19 Jul 2023 21:48:06 +0900 Subject: [PATCH 19/37] =?UTF-8?q?refactor:=20CustomerService=EC=97=90?= =?UTF-8?q?=EC=84=9C=20ConverterManager=EB=A5=BC=20=ED=86=B5=ED=95=B4=20co?= =?UTF-8?q?nvert=ED=95=98=EB=8F=84=EB=A1=9D=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/customer/CustomerService.java | 34 +++++++------------ .../CustomerCreateQueryConverter.java | 14 ++++++-- .../CustomerCreateResultConverter.java | 17 +++++++--- .../converter/CustomerResultConverter.java | 14 ++++++-- .../CustomerServiceConverterManager.java | 30 ++++++++++++++++ .../CustomerFactory.java} | 6 ++-- .../service/voucher/result/VoucherResult.java | 1 + .../OwnedCustomersQueryConverter.java | 3 +- .../OwnedCustomersResultConverter.java | 3 +- .../converter/OwnedVoucherQueryConverter.java | 3 +- .../OwnedVoucherResultConverter.java | 3 +- .../WalletInsertResultConverter.java | 3 +- .../param/WalletDeleteParam.java | 1 + 13 files changed, 96 insertions(+), 36 deletions(-) create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/converter/CustomerServiceConverterManager.java rename voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/{creator/CustomerCreator.java => factory/CustomerFactory.java} (69%) diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/CustomerService.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/CustomerService.java index 5502ee95fb..6158015409 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/CustomerService.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/CustomerService.java @@ -5,10 +5,8 @@ import com.wonu606.vouchermanager.repository.customer.query.CustomerCreateQuery; import com.wonu606.vouchermanager.repository.customer.resultset.CustomerCreateResultSet; import com.wonu606.vouchermanager.repository.customer.resultset.CustomerResultSet; -import com.wonu606.vouchermanager.service.customer.converter.CustomerCreateQueryConverter; -import com.wonu606.vouchermanager.service.customer.converter.CustomerCreateResultConverter; -import com.wonu606.vouchermanager.service.customer.converter.CustomerResultConverter; -import com.wonu606.vouchermanager.service.customer.creator.CustomerCreator; +import com.wonu606.vouchermanager.service.customer.converter.CustomerServiceConverterManager; +import com.wonu606.vouchermanager.service.customer.factory.CustomerFactory; import com.wonu606.vouchermanager.service.customer.param.CustomerCreateParam; import com.wonu606.vouchermanager.service.customer.result.CustomerCreateResult; import com.wonu606.vouchermanager.service.customer.result.CustomerResult; @@ -26,38 +24,32 @@ public class CustomerService { private final VoucherWalletService voucherWalletService; - private final CustomerRepository repository; + private final CustomerFactory customerFactory; + private final CustomerServiceConverterManager converterManager; - private final CustomerCreator customerCreator; - private final CustomerCreateQueryConverter customerCreateQueryConverter; - private final CustomerCreateResultConverter customerCreateResultConverter; - private final CustomerResultConverter customerResultConverter; - - public CustomerService(VoucherWalletService voucherWalletService, - CustomerRepository repository) { + public CustomerService(VoucherWalletService voucherWalletService, CustomerRepository repository, + CustomerFactory customerFactory, CustomerServiceConverterManager converterManager) { this.voucherWalletService = voucherWalletService; this.repository = repository; - - customerCreator = new CustomerCreator(); - customerCreateQueryConverter = new CustomerCreateQueryConverter(); - customerCreateResultConverter = new CustomerCreateResultConverter(); - customerResultConverter = new CustomerResultConverter(); + this.customerFactory = customerFactory; + this.converterManager = converterManager; } public CustomerCreateResult createCustomer(CustomerCreateParam param) { - Customer createdCustomer = customerCreator.create(param); - CustomerCreateQuery query = customerCreateQueryConverter.convert(createdCustomer); + Customer createdCustomer = customerFactory.create(param); + CustomerCreateQuery query = converterManager.convert(createdCustomer, + CustomerCreateQuery.class); CustomerCreateResultSet resultSet = repository.insert(query); - return customerCreateResultConverter.convert(resultSet); + return converterManager.convert(resultSet, CustomerCreateResult.class); } public List getCustomerList() { List resultSets = repository.findAll(); return resultSets.stream() - .map(customerResultConverter::convert) + .map(rs -> converterManager.convert(rs, CustomerResult.class)) .collect(Collectors.toList()); } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/converter/CustomerCreateQueryConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/converter/CustomerCreateQueryConverter.java index 2fd650bc4a..25000f284b 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/converter/CustomerCreateQueryConverter.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/converter/CustomerCreateQueryConverter.java @@ -2,12 +2,22 @@ import com.wonu606.vouchermanager.domain.customer.Customer; import com.wonu606.vouchermanager.repository.customer.query.CustomerCreateQuery; -import org.springframework.core.convert.converter.Converter; +import com.wonu606.vouchermanager.util.TypedConverter; -public class CustomerCreateQueryConverter implements Converter { +public class CustomerCreateQueryConverter implements TypedConverter { @Override public CustomerCreateQuery convert(Customer entity) { return new CustomerCreateQuery(entity.getEmailAddress(), entity.getNickname()); } + + @Override + public Class getSourceType() { + return Customer.class; + } + + @Override + public Class getTargetType() { + return CustomerCreateQuery.class; + } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/converter/CustomerCreateResultConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/converter/CustomerCreateResultConverter.java index 66e3ae049d..974bee8e9b 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/converter/CustomerCreateResultConverter.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/converter/CustomerCreateResultConverter.java @@ -1,15 +1,24 @@ package com.wonu606.vouchermanager.service.customer.converter; -import com.wonu606.vouchermanager.domain.customer.Customer; -import com.wonu606.vouchermanager.repository.customer.query.CustomerCreateQuery; import com.wonu606.vouchermanager.repository.customer.resultset.CustomerCreateResultSet; import com.wonu606.vouchermanager.service.customer.result.CustomerCreateResult; -import org.springframework.core.convert.converter.Converter; +import com.wonu606.vouchermanager.util.TypedConverter; -public class CustomerCreateResultConverter implements Converter { +public class CustomerCreateResultConverter implements + TypedConverter { @Override public CustomerCreateResult convert(CustomerCreateResultSet resultSet) { return new CustomerCreateResult(resultSet.getTaskSuccess() == 1); } + + @Override + public Class getSourceType() { + return CustomerCreateResultSet.class; + } + + @Override + public Class getTargetType() { + return CustomerCreateResult.class; + } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/converter/CustomerResultConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/converter/CustomerResultConverter.java index 7ec19db110..a0b3124c74 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/converter/CustomerResultConverter.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/converter/CustomerResultConverter.java @@ -2,12 +2,22 @@ import com.wonu606.vouchermanager.repository.customer.resultset.CustomerResultSet; import com.wonu606.vouchermanager.service.customer.result.CustomerResult; -import org.springframework.core.convert.converter.Converter; +import com.wonu606.vouchermanager.util.TypedConverter; -public class CustomerResultConverter implements Converter { +public class CustomerResultConverter implements TypedConverter { @Override public CustomerResult convert(CustomerResultSet resultSet) { return new CustomerResult(resultSet.getEmail(), resultSet.getNickname()); } + + @Override + public Class getSourceType() { + return CustomerResultSet.class; + } + + @Override + public Class getTargetType() { + return CustomerResult.class; + } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/converter/CustomerServiceConverterManager.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/converter/CustomerServiceConverterManager.java new file mode 100644 index 0000000000..d39982500d --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/converter/CustomerServiceConverterManager.java @@ -0,0 +1,30 @@ +package com.wonu606.vouchermanager.service.customer.converter; + +import com.wonu606.vouchermanager.util.TypedConverter; +import java.util.ArrayList; +import java.util.List; +import org.springframework.stereotype.Component; + +@Component +public class CustomerServiceConverterManager { + + private final List> converterList; + + public CustomerServiceConverterManager() { + converterList = new ArrayList<>(); + converterList.add(new CustomerCreateQueryConverter()); + converterList.add(new CustomerCreateResultConverter()); + converterList.add(new CustomerResultConverter()); + } + + @SuppressWarnings("unchecked") + public T convert(S source, Class targetType) { + for (TypedConverter converter : converterList) { + if (converter.canConvert(source.getClass(), targetType)) { + return ((TypedConverter) converter).convert(source); + } + } + throw new IllegalArgumentException( + source.getClass() + "타입을 " + targetType + "로 변환할 수 없습니다."); + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/creator/CustomerCreator.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/factory/CustomerFactory.java similarity index 69% rename from voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/creator/CustomerCreator.java rename to voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/factory/CustomerFactory.java index 9eaca148bb..d403ac6bb0 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/creator/CustomerCreator.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/factory/CustomerFactory.java @@ -1,10 +1,12 @@ -package com.wonu606.vouchermanager.service.customer.creator; +package com.wonu606.vouchermanager.service.customer.factory; import com.wonu606.vouchermanager.domain.customer.Customer; import com.wonu606.vouchermanager.domain.customer.email.Email; import com.wonu606.vouchermanager.service.customer.param.CustomerCreateParam; +import org.springframework.stereotype.Component; -public class CustomerCreator { +@Component +public class CustomerFactory { public Customer create(CustomerCreateParam param) { return new Customer(new Email(param.getEmail()), param.getNickname()); diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/result/VoucherResult.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/result/VoucherResult.java index 2fd5203482..f61068ac1c 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/result/VoucherResult.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/result/VoucherResult.java @@ -1,6 +1,7 @@ package com.wonu606.vouchermanager.service.voucher.result; public class VoucherResult { + private final String voucherUuid; private final String voucherClassType; private final Double discountValue; diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/OwnedCustomersQueryConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/OwnedCustomersQueryConverter.java index b41f750368..86cbc4d807 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/OwnedCustomersQueryConverter.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/OwnedCustomersQueryConverter.java @@ -4,7 +4,8 @@ import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedCustomersParam; import org.springframework.core.convert.converter.Converter; -public class OwnedCustomersQueryConverter implements Converter { +public class OwnedCustomersQueryConverter implements + Converter { @Override public OwnedCustomersQuery convert(OwnedCustomersParam param) { diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/OwnedCustomersResultConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/OwnedCustomersResultConverter.java index 200497df70..adec9e192b 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/OwnedCustomersResultConverter.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/OwnedCustomersResultConverter.java @@ -4,7 +4,8 @@ import com.wonu606.vouchermanager.service.voucherwallet.result.OwnedCustomerResult; import org.springframework.core.convert.converter.Converter; -public class OwnedCustomersResultConverter implements Converter { +public class OwnedCustomersResultConverter implements + Converter { @Override public OwnedCustomerResult convert(OwnedCustomerResultSet param) { diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/OwnedVoucherQueryConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/OwnedVoucherQueryConverter.java index a28e690eed..d363f3bf9d 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/OwnedVoucherQueryConverter.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/OwnedVoucherQueryConverter.java @@ -4,7 +4,8 @@ import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedVouchersParam; import org.springframework.core.convert.converter.Converter; -public class OwnedVoucherQueryConverter implements Converter { +public class OwnedVoucherQueryConverter implements + Converter { public OwnedVouchersQuery convert(OwnedVouchersParam param) { return new OwnedVouchersQuery(param.getEmail()); diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/OwnedVoucherResultConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/OwnedVoucherResultConverter.java index 17961bde2c..d6d1b6289e 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/OwnedVoucherResultConverter.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/OwnedVoucherResultConverter.java @@ -4,7 +4,8 @@ import com.wonu606.vouchermanager.service.voucherwallet.result.OwnedVoucherResult; import org.springframework.core.convert.converter.Converter; -public class OwnedVoucherResultConverter implements Converter { +public class OwnedVoucherResultConverter implements + Converter { public OwnedVoucherResult convert(OwnedVoucherResultSet resultSet) { return new OwnedVoucherResult(resultSet.getVoucherId()); diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/WalletInsertResultConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/WalletInsertResultConverter.java index 8a1caab568..9dd7549256 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/WalletInsertResultConverter.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/WalletInsertResultConverter.java @@ -4,7 +4,8 @@ import com.wonu606.vouchermanager.service.voucherwallet.result.WalletAssignResult; import org.springframework.core.convert.converter.Converter; -public class WalletInsertResultConverter implements Converter { +public class WalletInsertResultConverter implements + Converter { @Override public WalletAssignResult convert(WalletInsertResultSet param) { diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/param/WalletDeleteParam.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/param/WalletDeleteParam.java index 2cb5c76750..1570173a84 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/param/WalletDeleteParam.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/param/WalletDeleteParam.java @@ -3,6 +3,7 @@ import java.util.UUID; public class WalletDeleteParam { + private final UUID voucherUuid; private final String customerEmail; From 4b8dba0fc9f58fded992d413d9cd1093ae3446bd Mon Sep 17 00:00:00 2001 From: wonu606 Date: Wed, 19 Jul 2023 21:52:28 +0900 Subject: [PATCH 20/37] =?UTF-8?q?refactor:=20VoucherService=EC=97=90?= =?UTF-8?q?=EC=84=9C=20ConverterManager=EB=A5=BC=20=ED=86=B5=ED=95=B4=20Co?= =?UTF-8?q?nvert=ED=95=98=EB=8F=84=EB=A1=9D=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/voucher/VoucherService.java | 24 +++++---------- .../VoucherCreateQueryConverter.java | 14 +++++++-- .../VoucherCreateResultConverter.java | 14 +++++++-- .../converter/VoucherResultConverter.java | 14 +++++++-- .../VoucherServiceConverterManager.java | 30 +++++++++++++++++++ 5 files changed, 74 insertions(+), 22 deletions(-) create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/converter/VoucherServiceConverterManager.java diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/VoucherService.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/VoucherService.java index 740ed46c28..66399095e9 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/VoucherService.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/VoucherService.java @@ -5,9 +5,7 @@ import com.wonu606.vouchermanager.repository.voucher.query.VoucherInsertQuery; import com.wonu606.vouchermanager.repository.voucher.resultset.VoucherInsertResultSet; import com.wonu606.vouchermanager.repository.voucher.resultset.VoucherResultSet; -import com.wonu606.vouchermanager.service.voucher.converter.VoucherCreateQueryConverter; -import com.wonu606.vouchermanager.service.voucher.converter.VoucherCreateResultConverter; -import com.wonu606.vouchermanager.service.voucher.converter.VoucherResultConverter; +import com.wonu606.vouchermanager.service.voucher.converter.VoucherServiceConverterManager; import com.wonu606.vouchermanager.service.voucher.factory.VoucherFactory; import com.wonu606.vouchermanager.service.voucher.param.VoucherCreateParam; import com.wonu606.vouchermanager.service.voucher.result.VoucherCreateResult; @@ -35,20 +33,14 @@ public class VoucherService { private final VoucherWalletService voucherWalletService; private final VoucherRepository repository; private final VoucherFactory factory; + private final VoucherServiceConverterManager converterManager; - private final VoucherCreateQueryConverter voucherCreateQueryConverter; - private final VoucherCreateResultConverter voucherCreateResultConverter; - private final VoucherResultConverter voucherResultConverter; - - public VoucherService(VoucherWalletService voucherWalletService, - VoucherRepository repository, VoucherFactory factory) { + public VoucherService(VoucherWalletService voucherWalletService, VoucherRepository repository, + VoucherFactory factory, VoucherServiceConverterManager converterManager) { this.voucherWalletService = voucherWalletService; this.repository = repository; this.factory = factory; - - voucherCreateQueryConverter = new VoucherCreateQueryConverter(); - voucherCreateResultConverter = new VoucherCreateResultConverter(); - voucherResultConverter = new VoucherResultConverter(); + this.converterManager = converterManager; } public VoucherCreateResult createVoucher(VoucherCreateParam param) { @@ -58,7 +50,7 @@ public VoucherCreateResult createVoucher(VoucherCreateParam param) { public List getVoucherList() { List resultSets = repository.findAll(); return resultSets.stream() - .map(voucherResultConverter::convert) + .map(rs -> converterManager.convert(rs, VoucherResult.class)) .collect(Collectors.toList()); } @@ -78,10 +70,10 @@ private VoucherCreateResult createVoucher(VoucherCreateParam voucherCreateParam, } Voucher voucher = factory.create(voucherCreateParam); - VoucherInsertQuery query = voucherCreateQueryConverter.convert(voucher); + VoucherInsertQuery query = converterManager.convert(voucher, VoucherInsertQuery.class); try { VoucherInsertResultSet resultSet = repository.insert(query); - return voucherCreateResultConverter.convert(resultSet); + return converterManager.convert(resultSet, VoucherCreateResult.class); } catch (DuplicateKeyException e) { log.info("DuplicateKeyException가 발생하였습니다. ", e); return createVoucher(voucherCreateParam, retryCount + 1); diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/converter/VoucherCreateQueryConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/converter/VoucherCreateQueryConverter.java index a03acf5fff..80aecbbd9b 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/converter/VoucherCreateQueryConverter.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/converter/VoucherCreateQueryConverter.java @@ -2,13 +2,23 @@ import com.wonu606.vouchermanager.domain.voucher.Voucher; import com.wonu606.vouchermanager.repository.voucher.query.VoucherInsertQuery; -import org.springframework.core.convert.converter.Converter; +import com.wonu606.vouchermanager.util.TypedConverter; -public class VoucherCreateQueryConverter implements Converter { +public class VoucherCreateQueryConverter implements TypedConverter { @Override public VoucherInsertQuery convert(Voucher voucher) { return new VoucherInsertQuery(voucher.getClass().getSimpleName(), voucher.getUuid().toString(), voucher.getDiscountValue()); } + + @Override + public Class getSourceType() { + return Voucher.class; + } + + @Override + public Class getTargetType() { + return VoucherInsertQuery.class; + } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/converter/VoucherCreateResultConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/converter/VoucherCreateResultConverter.java index c0fbd1aa97..fdbb7b7681 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/converter/VoucherCreateResultConverter.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/converter/VoucherCreateResultConverter.java @@ -2,13 +2,23 @@ import com.wonu606.vouchermanager.repository.voucher.resultset.VoucherInsertResultSet; import com.wonu606.vouchermanager.service.voucher.result.VoucherCreateResult; -import org.springframework.core.convert.converter.Converter; +import com.wonu606.vouchermanager.util.TypedConverter; public class VoucherCreateResultConverter implements - Converter { + TypedConverter { @Override public VoucherCreateResult convert(VoucherInsertResultSet param) { return new VoucherCreateResult(param.getAffectedRowsCount() == 1); } + + @Override + public Class getSourceType() { + return VoucherInsertResultSet.class; + } + + @Override + public Class getTargetType() { + return VoucherCreateResult.class; + } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/converter/VoucherResultConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/converter/VoucherResultConverter.java index 8cf7ee8707..ee047462d5 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/converter/VoucherResultConverter.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/converter/VoucherResultConverter.java @@ -2,13 +2,23 @@ import com.wonu606.vouchermanager.repository.voucher.resultset.VoucherResultSet; import com.wonu606.vouchermanager.service.voucher.result.VoucherResult; -import org.springframework.core.convert.converter.Converter; +import com.wonu606.vouchermanager.util.TypedConverter; -public class VoucherResultConverter implements Converter { +public class VoucherResultConverter implements TypedConverter { @Override public VoucherResult convert(VoucherResultSet resultSet) { return new VoucherResult(resultSet.getSimpleName(), resultSet.getUuid(), resultSet.getDiscountValue()); } + + @Override + public Class getSourceType() { + return VoucherResultSet.class; + } + + @Override + public Class getTargetType() { + return VoucherResult.class; + } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/converter/VoucherServiceConverterManager.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/converter/VoucherServiceConverterManager.java new file mode 100644 index 0000000000..3d9171bbc3 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/converter/VoucherServiceConverterManager.java @@ -0,0 +1,30 @@ +package com.wonu606.vouchermanager.service.voucher.converter; + +import com.wonu606.vouchermanager.util.TypedConverter; +import java.util.ArrayList; +import java.util.List; +import org.springframework.stereotype.Component; + +@Component +public class VoucherServiceConverterManager { + + private final List> converterList; + + public VoucherServiceConverterManager() { + converterList = new ArrayList<>(); + converterList.add(new VoucherCreateQueryConverter()); + converterList.add(new VoucherCreateResultConverter()); + converterList.add(new VoucherResultConverter()); + } + + @SuppressWarnings("unchecked") + public T convert(S source, Class targetType) { + for (TypedConverter converter : converterList) { + if (converter.canConvert(source.getClass(), targetType)) { + return ((TypedConverter) converter).convert(source); + } + } + throw new IllegalArgumentException( + source.getClass() + "타입을 " + targetType + "로 변환할 수 없습니다."); + } +} From bd3435ddfad05091baa8ee8ae9dabf0ce5fcab9b Mon Sep 17 00:00:00 2001 From: wonu606 Date: Thu, 20 Jul 2023 12:32:51 +0900 Subject: [PATCH 21/37] =?UTF-8?q?refactor:=20VoucherWalletService=EC=97=90?= =?UTF-8?q?=EC=84=9C=20ConvertManager=EB=A5=BC=20=ED=86=B5=ED=95=B4=20Conv?= =?UTF-8?q?ert=ED=95=98=EB=8F=84=EB=A1=9D=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../voucherwallet/VoucherWalletService.java | 44 +++++-------------- .../OwnedCustomersQueryConverter.java | 14 +++++- .../OwnedCustomersResultConverter.java | 14 +++++- .../converter/OwnedVoucherQueryConverter.java | 14 +++++- .../OwnedVoucherResultConverter.java | 14 +++++- .../VoucherWalletServiceConverterManager.java | 34 ++++++++++++++ .../converter/WalletDeleteQueryConverter.java | 15 ++++++- .../converter/WalletInsertQueryConverter.java | 15 ++++++- .../WalletInsertResultConverter.java | 14 +++++- 9 files changed, 132 insertions(+), 46 deletions(-) create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/VoucherWalletServiceConverterManager.java diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/VoucherWalletService.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/VoucherWalletService.java index 6dbb8eb2f4..04380a6e2f 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/VoucherWalletService.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/VoucherWalletService.java @@ -8,13 +8,7 @@ import com.wonu606.vouchermanager.repository.voucherwallet.resultset.OwnedCustomerResultSet; import com.wonu606.vouchermanager.repository.voucherwallet.resultset.OwnedVoucherResultSet; import com.wonu606.vouchermanager.repository.voucherwallet.resultset.WalletInsertResultSet; -import com.wonu606.vouchermanager.service.voucherwallet.converter.OwnedCustomersQueryConverter; -import com.wonu606.vouchermanager.service.voucherwallet.converter.OwnedCustomersResultConverter; -import com.wonu606.vouchermanager.service.voucherwallet.converter.OwnedVoucherQueryConverter; -import com.wonu606.vouchermanager.service.voucherwallet.converter.OwnedVoucherResultConverter; -import com.wonu606.vouchermanager.service.voucherwallet.converter.WalletDeleteQueryConverter; -import com.wonu606.vouchermanager.service.voucherwallet.converter.WalletInsertQueryConverter; -import com.wonu606.vouchermanager.service.voucherwallet.converter.WalletInsertResultConverter; +import com.wonu606.vouchermanager.service.voucherwallet.converter.VoucherWalletServiceConverterManager; import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedCustomersParam; import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedVouchersParam; import com.wonu606.vouchermanager.service.voucherwallet.param.WalletAssignParam; @@ -32,57 +26,43 @@ public class VoucherWalletService { private final VoucherWalletRepository voucherWalletRepository; + private final VoucherWalletServiceConverterManager converterManager; - private final OwnedVoucherQueryConverter ownedVoucherQueryConverter; - private final OwnedVoucherResultConverter ownedVoucherResultConverter; - private final WalletDeleteQueryConverter walletDeleteQueryConverter; - private final WalletInsertQueryConverter walletInsertQueryConverter; - private final WalletInsertResultConverter walletInsertResultConverter; - - private final OwnedCustomersQueryConverter ownedCustomersQueryConverter; - private final OwnedCustomersResultConverter ownedCustomersResultConverter; - - public VoucherWalletService(VoucherWalletRepository voucherWalletRepository) { + public VoucherWalletService(VoucherWalletRepository voucherWalletRepository, + VoucherWalletServiceConverterManager converterManager) { this.voucherWalletRepository = voucherWalletRepository; - - ownedVoucherQueryConverter = new OwnedVoucherQueryConverter(); - ownedVoucherResultConverter = new OwnedVoucherResultConverter(); - walletDeleteQueryConverter = new WalletDeleteQueryConverter(); - walletInsertQueryConverter = new WalletInsertQueryConverter(); - walletInsertResultConverter = new WalletInsertResultConverter(); - ownedCustomersQueryConverter = new OwnedCustomersQueryConverter(); - ownedCustomersResultConverter = new OwnedCustomersResultConverter(); + this.converterManager = converterManager; } public List findOwnedVouchersByCustomer(OwnedVouchersParam param) { - OwnedVouchersQuery query = ownedVoucherQueryConverter.convert(param); + OwnedVouchersQuery query = converterManager.convert(param, OwnedVouchersQuery.class); List resultSets = voucherWalletRepository.findOwnedVouchersByCustomer(query); return resultSets.stream() - .map(ownedVoucherResultConverter::convert) + .map(rs -> converterManager.convert(rs, OwnedVoucherResult.class)) .collect(Collectors.toList()); } public void deleteWallet(WalletDeleteParam param) { - WalletDeleteQuery query = walletDeleteQueryConverter.convert(param); + WalletDeleteQuery query = converterManager.convert(param, WalletDeleteQuery.class); voucherWalletRepository.delete(query); } public WalletAssignResult assignWallet(WalletAssignParam param) { - WalletInsertQuery query = walletInsertQueryConverter.convert(param); + WalletInsertQuery query = converterManager.convert(param, WalletInsertQuery.class); WalletInsertResultSet resultSet = voucherWalletRepository.insert(query); - return walletInsertResultConverter.convert(resultSet); + return converterManager.convert(resultSet, WalletAssignResult.class); } public List findOwnedCustomersByVoucher(OwnedCustomersParam param) { - OwnedCustomersQuery query = ownedCustomersQueryConverter.convert(param); + OwnedCustomersQuery query = converterManager.convert(param, OwnedCustomersQuery.class); List resultSets = voucherWalletRepository.findOwnedCustomersByVoucher(query); return resultSets.stream() - .map(ownedCustomersResultConverter::convert) + .map(rs -> converterManager.convert(rs, OwnedCustomerResult.class)) .collect(Collectors.toList()); } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/OwnedCustomersQueryConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/OwnedCustomersQueryConverter.java index 86cbc4d807..d80479bf9c 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/OwnedCustomersQueryConverter.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/OwnedCustomersQueryConverter.java @@ -2,13 +2,23 @@ import com.wonu606.vouchermanager.repository.voucherwallet.query.OwnedCustomersQuery; import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedCustomersParam; -import org.springframework.core.convert.converter.Converter; +import com.wonu606.vouchermanager.util.TypedConverter; public class OwnedCustomersQueryConverter implements - Converter { + TypedConverter { @Override public OwnedCustomersQuery convert(OwnedCustomersParam param) { return new OwnedCustomersQuery(param.getVoucherUuid().toString()); } + + @Override + public Class getSourceType() { + return OwnedCustomersParam.class; + } + + @Override + public Class getTargetType() { + return OwnedCustomersQuery.class; + } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/OwnedCustomersResultConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/OwnedCustomersResultConverter.java index adec9e192b..e7e1ab0d11 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/OwnedCustomersResultConverter.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/OwnedCustomersResultConverter.java @@ -2,13 +2,23 @@ import com.wonu606.vouchermanager.repository.voucherwallet.resultset.OwnedCustomerResultSet; import com.wonu606.vouchermanager.service.voucherwallet.result.OwnedCustomerResult; -import org.springframework.core.convert.converter.Converter; +import com.wonu606.vouchermanager.util.TypedConverter; public class OwnedCustomersResultConverter implements - Converter { + TypedConverter { @Override public OwnedCustomerResult convert(OwnedCustomerResultSet param) { return new OwnedCustomerResult(param.getCustomerId()); } + + @Override + public Class getSourceType() { + return OwnedCustomerResultSet.class; + } + + @Override + public Class getTargetType() { + return OwnedCustomerResult.class; + } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/OwnedVoucherQueryConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/OwnedVoucherQueryConverter.java index d363f3bf9d..2751ceedff 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/OwnedVoucherQueryConverter.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/OwnedVoucherQueryConverter.java @@ -2,12 +2,22 @@ import com.wonu606.vouchermanager.repository.voucherwallet.query.OwnedVouchersQuery; import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedVouchersParam; -import org.springframework.core.convert.converter.Converter; +import com.wonu606.vouchermanager.util.TypedConverter; public class OwnedVoucherQueryConverter implements - Converter { + TypedConverter { public OwnedVouchersQuery convert(OwnedVouchersParam param) { return new OwnedVouchersQuery(param.getEmail()); } + + @Override + public Class getSourceType() { + return OwnedVouchersParam.class; + } + + @Override + public Class getTargetType() { + return OwnedVouchersQuery.class; + } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/OwnedVoucherResultConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/OwnedVoucherResultConverter.java index d6d1b6289e..202cf8d88c 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/OwnedVoucherResultConverter.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/OwnedVoucherResultConverter.java @@ -2,12 +2,22 @@ import com.wonu606.vouchermanager.repository.voucherwallet.resultset.OwnedVoucherResultSet; import com.wonu606.vouchermanager.service.voucherwallet.result.OwnedVoucherResult; -import org.springframework.core.convert.converter.Converter; +import com.wonu606.vouchermanager.util.TypedConverter; public class OwnedVoucherResultConverter implements - Converter { + TypedConverter { public OwnedVoucherResult convert(OwnedVoucherResultSet resultSet) { return new OwnedVoucherResult(resultSet.getVoucherId()); } + + @Override + public Class getSourceType() { + return OwnedVoucherResultSet.class; + } + + @Override + public Class getTargetType() { + return OwnedVoucherResult.class; + } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/VoucherWalletServiceConverterManager.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/VoucherWalletServiceConverterManager.java new file mode 100644 index 0000000000..2d89726849 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/VoucherWalletServiceConverterManager.java @@ -0,0 +1,34 @@ +package com.wonu606.vouchermanager.service.voucherwallet.converter; + +import com.wonu606.vouchermanager.util.TypedConverter; +import java.util.ArrayList; +import java.util.List; +import org.springframework.stereotype.Component; + +@Component +public class VoucherWalletServiceConverterManager { + + private final List> converterList; + + public VoucherWalletServiceConverterManager() { + converterList = new ArrayList<>(); + converterList.add(new OwnedVoucherQueryConverter()); + converterList.add(new OwnedVoucherResultConverter()); + converterList.add(new WalletDeleteQueryConverter()); + converterList.add(new WalletInsertQueryConverter()); + converterList.add(new WalletInsertResultConverter()); + converterList.add(new OwnedCustomersQueryConverter()); + converterList.add(new OwnedCustomersResultConverter()); + } + + @SuppressWarnings("unchecked") + public T convert(S source, Class targetType) { + for (TypedConverter converter : converterList) { + if (converter.canConvert(source.getClass(), targetType)) { + return ((TypedConverter) converter).convert(source); + } + } + throw new IllegalArgumentException( + source.getClass() + "타입을 " + targetType + "로 변환할 수 없습니다."); + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/WalletDeleteQueryConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/WalletDeleteQueryConverter.java index 64898ecd66..3a0d80afc0 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/WalletDeleteQueryConverter.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/WalletDeleteQueryConverter.java @@ -2,12 +2,23 @@ import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletDeleteQuery; import com.wonu606.vouchermanager.service.voucherwallet.param.WalletDeleteParam; -import org.springframework.core.convert.converter.Converter; +import com.wonu606.vouchermanager.util.TypedConverter; -public class WalletDeleteQueryConverter implements Converter { +public class WalletDeleteQueryConverter implements + TypedConverter { @Override public WalletDeleteQuery convert(WalletDeleteParam param) { return new WalletDeleteQuery(param.getCustomerEmail(), param.getVoucherUuid().toString()); } + + @Override + public Class getSourceType() { + return WalletDeleteParam.class; + } + + @Override + public Class getTargetType() { + return WalletDeleteQuery.class; + } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/WalletInsertQueryConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/WalletInsertQueryConverter.java index 4f30cfd5ef..b74c7a2464 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/WalletInsertQueryConverter.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/WalletInsertQueryConverter.java @@ -2,12 +2,23 @@ import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletInsertQuery; import com.wonu606.vouchermanager.service.voucherwallet.param.WalletAssignParam; -import org.springframework.core.convert.converter.Converter; +import com.wonu606.vouchermanager.util.TypedConverter; -public class WalletInsertQueryConverter implements Converter { +public class WalletInsertQueryConverter implements + TypedConverter { @Override public WalletInsertQuery convert(WalletAssignParam param) { return new WalletInsertQuery(param.getVoucherId().toString()); } + + @Override + public Class getSourceType() { + return WalletAssignParam.class; + } + + @Override + public Class getTargetType() { + return WalletInsertQuery.class; + } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/WalletInsertResultConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/WalletInsertResultConverter.java index 9dd7549256..c886c46aad 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/WalletInsertResultConverter.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/WalletInsertResultConverter.java @@ -2,13 +2,23 @@ import com.wonu606.vouchermanager.repository.voucherwallet.resultset.WalletInsertResultSet; import com.wonu606.vouchermanager.service.voucherwallet.result.WalletAssignResult; -import org.springframework.core.convert.converter.Converter; +import com.wonu606.vouchermanager.util.TypedConverter; public class WalletInsertResultConverter implements - Converter { + TypedConverter { @Override public WalletAssignResult convert(WalletInsertResultSet param) { return new WalletAssignResult(param.getAffectedRowsCount() == 1); } + + @Override + public Class getSourceType() { + return WalletInsertResultSet.class; + } + + @Override + public Class getTargetType() { + return WalletAssignResult.class; + } } From a5b581d851a4ee4e95221a53f2fa0548ac13e989 Mon Sep 17 00:00:00 2001 From: wonu606 Date: Thu, 20 Jul 2023 12:55:39 +0900 Subject: [PATCH 22/37] =?UTF-8?q?refactor(CustomerRepository):=20reader?= =?UTF-8?q?=EC=99=80=20store=EB=A5=BC=20=ED=86=B5=ED=95=B4=20=ED=95=A8?= =?UTF-8?q?=EC=88=98=20=EC=8B=A4=ED=96=89=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../OwnedVouchersParamConverter.java | 1 - .../converter/WalletDeleteParamConverter.java | 1 - .../OwnedCustomerResponseConverter.java | 1 - .../OwnedCustomersParamConverter.java | 3 -- .../converter/WalletAssignParamConverter.java | 1 - .../customer/CustomerJdbcRepository.java | 39 +++++++------------ .../customer/CustomerRepository.java | 4 +- .../customer/reader/CustomerJdbcReader.java | 26 +++++++++++++ .../customer/reader/CustomerReader.java | 9 +++++ .../rowmapper/CustomerResultSetRowMapper.java | 3 +- .../customer/store/CustomerJdbcStore.java | 36 +++++++++++++++++ .../customer/store/CustomerStore.java | 11 ++++++ .../resultset/WalletUpdateResultSet.java | 1 + .../voucherwallet/VoucherWalletService.java | 6 +-- .../OwnedCustomersQueryConverter.java | 2 +- .../converter/OwnedVoucherQueryConverter.java | 2 +- .../converter/WalletDeleteQueryConverter.java | 2 +- 17 files changed, 107 insertions(+), 41 deletions(-) create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/reader/CustomerJdbcReader.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/reader/CustomerReader.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/store/CustomerJdbcStore.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/store/CustomerStore.java diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/OwnedVouchersParamConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/OwnedVouchersParamConverter.java index 378839cc01..9356c7b972 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/OwnedVouchersParamConverter.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/OwnedVouchersParamConverter.java @@ -3,7 +3,6 @@ import com.wonu606.vouchermanager.controller.customer.request.OwnedVouchersRequest; import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedVouchersParam; import com.wonu606.vouchermanager.util.TypedConverter; -import org.springframework.core.convert.converter.Converter; public class OwnedVouchersParamConverter implements TypedConverter { diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/WalletDeleteParamConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/WalletDeleteParamConverter.java index 31993c31b2..c0e613f030 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/WalletDeleteParamConverter.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/WalletDeleteParamConverter.java @@ -4,7 +4,6 @@ import com.wonu606.vouchermanager.service.voucherwallet.param.WalletDeleteParam; import com.wonu606.vouchermanager.util.TypedConverter; import java.util.UUID; -import org.springframework.core.convert.converter.Converter; public class WalletDeleteParamConverter implements TypedConverter { diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/OwnedCustomerResponseConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/OwnedCustomerResponseConverter.java index a5fd200038..865d600a76 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/OwnedCustomerResponseConverter.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/OwnedCustomerResponseConverter.java @@ -3,7 +3,6 @@ import com.wonu606.vouchermanager.controller.voucher.response.OwnedCustomerResponse; import com.wonu606.vouchermanager.service.voucherwallet.result.OwnedCustomerResult; import com.wonu606.vouchermanager.util.TypedConverter; -import org.springframework.core.convert.converter.Converter; public class OwnedCustomerResponseConverter implements TypedConverter { diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/OwnedCustomersParamConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/OwnedCustomersParamConverter.java index 2f21782fcb..555b95891d 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/OwnedCustomersParamConverter.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/OwnedCustomersParamConverter.java @@ -2,11 +2,8 @@ import com.wonu606.vouchermanager.controller.voucher.reqeust.OwnedCustomersRequest; import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedCustomersParam; -import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedVouchersParam; -import com.wonu606.vouchermanager.service.voucherwallet.result.OwnedCustomerResult; import com.wonu606.vouchermanager.util.TypedConverter; import java.util.UUID; -import org.springframework.core.convert.converter.Converter; public class OwnedCustomersParamConverter implements TypedConverter { diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/WalletAssignParamConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/WalletAssignParamConverter.java index 8a0264c8bb..3659417487 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/WalletAssignParamConverter.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/WalletAssignParamConverter.java @@ -4,7 +4,6 @@ import com.wonu606.vouchermanager.service.voucherwallet.param.WalletAssignParam; import com.wonu606.vouchermanager.util.TypedConverter; import java.util.UUID; -import org.springframework.core.convert.converter.Converter; public class WalletAssignParamConverter implements TypedConverter { diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/CustomerJdbcRepository.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/CustomerJdbcRepository.java index 2ffd05ecb3..216483b89d 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/CustomerJdbcRepository.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/CustomerJdbcRepository.java @@ -1,49 +1,38 @@ package com.wonu606.vouchermanager.repository.customer; import com.wonu606.vouchermanager.repository.customer.query.CustomerCreateQuery; +import com.wonu606.vouchermanager.repository.customer.reader.CustomerReader; import com.wonu606.vouchermanager.repository.customer.resultset.CustomerCreateResultSet; import com.wonu606.vouchermanager.repository.customer.resultset.CustomerResultSet; -import com.wonu606.vouchermanager.repository.customer.rowmapper.CustomerResultSetRowMapper; -import java.util.HashMap; +import com.wonu606.vouchermanager.repository.customer.store.CustomerStore; import java.util.List; -import java.util.Map; -import javax.sql.DataSource; -import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; @Component +@Transactional public class CustomerJdbcRepository implements CustomerRepository { - private final NamedParameterJdbcTemplate namedParameterJdbcTemplate; + CustomerReader reader; + CustomerStore store; - private final CustomerResultSetRowMapper customerResultSetRowMapper; - - public CustomerJdbcRepository(DataSource dataSource) { - this.namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(dataSource); - - customerResultSetRowMapper = new CustomerResultSetRowMapper(); + public CustomerJdbcRepository(CustomerReader reader, CustomerStore store) { + this.reader = reader; + this.store = store; } @Override - public CustomerCreateResultSet insert(CustomerCreateQuery query) { - String insertionSql = "INSERT INTO customer (email, nickname) VALUES (:email, :nickname)"; - Map params = new HashMap<>(); - params.put("email", query.getEmail()); - params.put("nickname", query.getNickname()); - return new CustomerCreateResultSet(namedParameterJdbcTemplate.update(insertionSql, params)); + public List findAll() { + return reader.findAll(); } @Override - public List findAll() { - String selectionSql = "SELECT email, nickname FROM customer"; - return namedParameterJdbcTemplate.query(selectionSql, customerResultSetRowMapper); + public CustomerCreateResultSet insert(CustomerCreateQuery query) { + return store.insert(query); } @Override public void deleteByCustomerId(String email) { - String deletionSql = "DELETE FROM customer WHERE email = :email"; - Map params = new HashMap<>(); - params.put("email", email); - namedParameterJdbcTemplate.update(deletionSql, params); + store.deleteByCustomerId(email); } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/CustomerRepository.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/CustomerRepository.java index ac0fb9e0cc..655c87b971 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/CustomerRepository.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/CustomerRepository.java @@ -7,9 +7,9 @@ public interface CustomerRepository { - CustomerCreateResultSet insert(CustomerCreateQuery query); - List findAll(); + CustomerCreateResultSet insert(CustomerCreateQuery query); + void deleteByCustomerId(String email); } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/reader/CustomerJdbcReader.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/reader/CustomerJdbcReader.java new file mode 100644 index 0000000000..23655b5fca --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/reader/CustomerJdbcReader.java @@ -0,0 +1,26 @@ +package com.wonu606.vouchermanager.repository.customer.reader; + +import com.wonu606.vouchermanager.repository.customer.resultset.CustomerResultSet; +import com.wonu606.vouchermanager.repository.customer.rowmapper.CustomerResultSetRowMapper; +import java.util.List; +import javax.sql.DataSource; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; +import org.springframework.stereotype.Component; + +@Component +public class CustomerJdbcReader implements CustomerReader { + + private final NamedParameterJdbcTemplate namedParameterJdbcTemplate; + private final CustomerResultSetRowMapper rowMapper; + + public CustomerJdbcReader(DataSource dataSource, CustomerResultSetRowMapper rowMapper) { + this.namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(dataSource); + this.rowMapper = rowMapper; + } + + @Override + public List findAll() { + String selectionSql = "SELECT email, nickname FROM customer"; + return namedParameterJdbcTemplate.query(selectionSql, rowMapper); + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/reader/CustomerReader.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/reader/CustomerReader.java new file mode 100644 index 0000000000..7dd9f48abf --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/reader/CustomerReader.java @@ -0,0 +1,9 @@ +package com.wonu606.vouchermanager.repository.customer.reader; + +import com.wonu606.vouchermanager.repository.customer.resultset.CustomerResultSet; +import java.util.List; + +public interface CustomerReader { + + List findAll(); +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/rowmapper/CustomerResultSetRowMapper.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/rowmapper/CustomerResultSetRowMapper.java index 164682358d..a0658cc44d 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/rowmapper/CustomerResultSetRowMapper.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/rowmapper/CustomerResultSetRowMapper.java @@ -3,9 +3,10 @@ import com.wonu606.vouchermanager.repository.customer.resultset.CustomerResultSet; import java.sql.ResultSet; import java.sql.SQLException; -import java.time.LocalDateTime; import org.springframework.jdbc.core.RowMapper; +import org.springframework.stereotype.Component; +@Component public class CustomerResultSetRowMapper implements RowMapper { @Override diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/store/CustomerJdbcStore.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/store/CustomerJdbcStore.java new file mode 100644 index 0000000000..6adcf59e44 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/store/CustomerJdbcStore.java @@ -0,0 +1,36 @@ +package com.wonu606.vouchermanager.repository.customer.store; + +import com.wonu606.vouchermanager.repository.customer.query.CustomerCreateQuery; +import com.wonu606.vouchermanager.repository.customer.resultset.CustomerCreateResultSet; +import java.util.HashMap; +import java.util.Map; +import javax.sql.DataSource; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; +import org.springframework.stereotype.Component; + +@Component +public class CustomerJdbcStore implements CustomerStore { + + private final NamedParameterJdbcTemplate namedParameterJdbcTemplate; + + public CustomerJdbcStore(DataSource dataSource) { + this.namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(dataSource); + } + + @Override + public CustomerCreateResultSet insert(CustomerCreateQuery query) { + String insertionSql = "INSERT INTO customer (email, nickname) VALUES (:email, :nickname)"; + Map params = new HashMap<>(); + params.put("email", query.getEmail()); + params.put("nickname", query.getNickname()); + return new CustomerCreateResultSet(namedParameterJdbcTemplate.update(insertionSql, params)); + } + + @Override + public void deleteByCustomerId(String email) { + String deletionSql = "DELETE FROM customer WHERE email = :email"; + Map params = new HashMap<>(); + params.put("email", email); + namedParameterJdbcTemplate.update(deletionSql, params); + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/store/CustomerStore.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/store/CustomerStore.java new file mode 100644 index 0000000000..c9ce92bb0f --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/store/CustomerStore.java @@ -0,0 +1,11 @@ +package com.wonu606.vouchermanager.repository.customer.store; + +import com.wonu606.vouchermanager.repository.customer.query.CustomerCreateQuery; +import com.wonu606.vouchermanager.repository.customer.resultset.CustomerCreateResultSet; + +public interface CustomerStore { + + CustomerCreateResultSet insert(CustomerCreateQuery query); + + void deleteByCustomerId(String email); +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/resultset/WalletUpdateResultSet.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/resultset/WalletUpdateResultSet.java index b9804dc90e..d1b34566fa 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/resultset/WalletUpdateResultSet.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/resultset/WalletUpdateResultSet.java @@ -1,6 +1,7 @@ package com.wonu606.vouchermanager.repository.voucherwallet.resultset; public class WalletUpdateResultSet { + private final Integer affectedRowsCount; public WalletUpdateResultSet(Integer affectedRowsCount) { diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/VoucherWalletService.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/VoucherWalletService.java index 04380a6e2f..79c0080d39 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/VoucherWalletService.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/VoucherWalletService.java @@ -1,5 +1,8 @@ package com.wonu606.vouchermanager.service.voucherwallet; +import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedCustomersParam; +import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedVouchersParam; +import com.wonu606.vouchermanager.service.voucherwallet.param.WalletDeleteParam; import com.wonu606.vouchermanager.repository.voucherwallet.VoucherWalletRepository; import com.wonu606.vouchermanager.repository.voucherwallet.query.OwnedCustomersQuery; import com.wonu606.vouchermanager.repository.voucherwallet.query.OwnedVouchersQuery; @@ -9,10 +12,7 @@ import com.wonu606.vouchermanager.repository.voucherwallet.resultset.OwnedVoucherResultSet; import com.wonu606.vouchermanager.repository.voucherwallet.resultset.WalletInsertResultSet; import com.wonu606.vouchermanager.service.voucherwallet.converter.VoucherWalletServiceConverterManager; -import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedCustomersParam; -import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedVouchersParam; import com.wonu606.vouchermanager.service.voucherwallet.param.WalletAssignParam; -import com.wonu606.vouchermanager.service.voucherwallet.param.WalletDeleteParam; import com.wonu606.vouchermanager.service.voucherwallet.result.OwnedCustomerResult; import com.wonu606.vouchermanager.service.voucherwallet.result.OwnedVoucherResult; import com.wonu606.vouchermanager.service.voucherwallet.result.WalletAssignResult; diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/OwnedCustomersQueryConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/OwnedCustomersQueryConverter.java index d80479bf9c..ee900d08a9 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/OwnedCustomersQueryConverter.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/OwnedCustomersQueryConverter.java @@ -1,7 +1,7 @@ package com.wonu606.vouchermanager.service.voucherwallet.converter; -import com.wonu606.vouchermanager.repository.voucherwallet.query.OwnedCustomersQuery; import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedCustomersParam; +import com.wonu606.vouchermanager.repository.voucherwallet.query.OwnedCustomersQuery; import com.wonu606.vouchermanager.util.TypedConverter; public class OwnedCustomersQueryConverter implements diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/OwnedVoucherQueryConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/OwnedVoucherQueryConverter.java index 2751ceedff..016fa948fb 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/OwnedVoucherQueryConverter.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/OwnedVoucherQueryConverter.java @@ -1,7 +1,7 @@ package com.wonu606.vouchermanager.service.voucherwallet.converter; -import com.wonu606.vouchermanager.repository.voucherwallet.query.OwnedVouchersQuery; import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedVouchersParam; +import com.wonu606.vouchermanager.repository.voucherwallet.query.OwnedVouchersQuery; import com.wonu606.vouchermanager.util.TypedConverter; public class OwnedVoucherQueryConverter implements diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/WalletDeleteQueryConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/WalletDeleteQueryConverter.java index 3a0d80afc0..a85b932605 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/WalletDeleteQueryConverter.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/WalletDeleteQueryConverter.java @@ -1,7 +1,7 @@ package com.wonu606.vouchermanager.service.voucherwallet.converter; -import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletDeleteQuery; import com.wonu606.vouchermanager.service.voucherwallet.param.WalletDeleteParam; +import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletDeleteQuery; import com.wonu606.vouchermanager.util.TypedConverter; public class WalletDeleteQueryConverter implements From 33687d2c71e041842a0ac906d0d6f678750e5659 Mon Sep 17 00:00:00 2001 From: wonu606 Date: Thu, 20 Jul 2023 18:23:38 +0900 Subject: [PATCH 23/37] =?UTF-8?q?refactor(VoucherRepository):=20reader?= =?UTF-8?q?=EC=99=80=20store=EB=A5=BC=20=ED=86=B5=ED=95=B4=20=ED=95=A8?= =?UTF-8?q?=EC=88=98=20=EC=8B=A4=ED=96=89=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../customer/reader/CustomerJdbcReader.java | 6 +-- .../customer/store/CustomerJdbcStore.java | 5 +- .../voucher/VoucherJdbcRepository.java | 51 +++++-------------- .../voucher/reader/VoucherJdbcReader.java | 46 +++++++++++++++++ .../voucher/reader/VoucherReader.java | 13 +++++ .../rowmapper/VoucherResultSetRowMapper.java | 2 + .../voucher/store/VoucherJdbcStore.java | 39 ++++++++++++++ .../voucher/store/VoucherStore.java | 12 +++++ 8 files changed, 130 insertions(+), 44 deletions(-) create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/reader/VoucherJdbcReader.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/reader/VoucherReader.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/store/VoucherJdbcStore.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/store/VoucherStore.java diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/reader/CustomerJdbcReader.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/reader/CustomerJdbcReader.java index 23655b5fca..127f713d65 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/reader/CustomerJdbcReader.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/reader/CustomerJdbcReader.java @@ -3,7 +3,6 @@ import com.wonu606.vouchermanager.repository.customer.resultset.CustomerResultSet; import com.wonu606.vouchermanager.repository.customer.rowmapper.CustomerResultSetRowMapper; import java.util.List; -import javax.sql.DataSource; import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; import org.springframework.stereotype.Component; @@ -13,8 +12,9 @@ public class CustomerJdbcReader implements CustomerReader { private final NamedParameterJdbcTemplate namedParameterJdbcTemplate; private final CustomerResultSetRowMapper rowMapper; - public CustomerJdbcReader(DataSource dataSource, CustomerResultSetRowMapper rowMapper) { - this.namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(dataSource); + public CustomerJdbcReader(NamedParameterJdbcTemplate namedParameterJdbcTemplate, + CustomerResultSetRowMapper rowMapper) { + this.namedParameterJdbcTemplate = namedParameterJdbcTemplate; this.rowMapper = rowMapper; } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/store/CustomerJdbcStore.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/store/CustomerJdbcStore.java index 6adcf59e44..2675c0fb9a 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/store/CustomerJdbcStore.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/store/CustomerJdbcStore.java @@ -4,7 +4,6 @@ import com.wonu606.vouchermanager.repository.customer.resultset.CustomerCreateResultSet; import java.util.HashMap; import java.util.Map; -import javax.sql.DataSource; import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; import org.springframework.stereotype.Component; @@ -13,8 +12,8 @@ public class CustomerJdbcStore implements CustomerStore { private final NamedParameterJdbcTemplate namedParameterJdbcTemplate; - public CustomerJdbcStore(DataSource dataSource) { - this.namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(dataSource); + public CustomerJdbcStore(NamedParameterJdbcTemplate namedParameterJdbcTemplate) { + this.namedParameterJdbcTemplate = namedParameterJdbcTemplate; } @Override diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/VoucherJdbcRepository.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/VoucherJdbcRepository.java index 0f98db9816..ed5c4b7a2b 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/VoucherJdbcRepository.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/VoucherJdbcRepository.java @@ -3,69 +3,44 @@ import com.wonu606.vouchermanager.repository.voucher.query.VoucherDeleteQuery; import com.wonu606.vouchermanager.repository.voucher.query.VoucherFindQuery; import com.wonu606.vouchermanager.repository.voucher.query.VoucherInsertQuery; +import com.wonu606.vouchermanager.repository.voucher.reader.VoucherReader; import com.wonu606.vouchermanager.repository.voucher.resultset.VoucherInsertResultSet; import com.wonu606.vouchermanager.repository.voucher.resultset.VoucherResultSet; -import com.wonu606.vouchermanager.repository.voucher.rowmapper.VoucherResultSetRowMapper; -import java.util.HashMap; +import com.wonu606.vouchermanager.repository.voucher.store.VoucherStore; import java.util.List; -import java.util.Map; import java.util.Optional; -import javax.sql.DataSource; -import org.springframework.dao.EmptyResultDataAccessException; -import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; @Component +@Transactional public class VoucherJdbcRepository implements VoucherRepository { - private final NamedParameterJdbcTemplate namedParameterJdbcTemplate; + VoucherReader reader; + VoucherStore store; - private final VoucherResultSetRowMapper voucherResultSetRowMapper; - - public VoucherJdbcRepository(DataSource dataSource) { - this.namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(dataSource); - - voucherResultSetRowMapper = new VoucherResultSetRowMapper(); + public VoucherJdbcRepository(VoucherReader reader, VoucherStore store) { + this.reader = reader; + this.store = store; } @Override public VoucherInsertResultSet insert(VoucherInsertQuery query) { - String insertionSql = "INSERT INTO voucher (voucher_id, voucher_type, discount_value) VALUES (:voucher_id, :voucher_type, :discount_value)"; - Map params = new HashMap<>(); - params.put("voucher_type", query.getVoucherClassSimpleName()); - params.put("voucher_id", query.getVoucherId()); - params.put("discount_value", query.getDiscountValue()); - - return new VoucherInsertResultSet(namedParameterJdbcTemplate.update(insertionSql, params)); + return store.insert(query); } @Override public Optional findById(VoucherFindQuery query) { - String selectionSql = "SELECT voucher_type, voucher_id, discount_value FROM voucher WHERE voucher_id = :voucher_id"; - Map params = new HashMap<>(); - params.put("voucher_id", query.getVoucherId()); - - try { - VoucherResultSet resultSet = namedParameterJdbcTemplate.queryForObject(selectionSql, - params, voucherResultSetRowMapper); - return Optional.ofNullable(resultSet); - } catch (EmptyResultDataAccessException e) { - return Optional.empty(); - } + return reader.findById(query); } @Override public List findAll() { - String selectSql = "SELECT voucher_type, voucher_id, discount_value FROM voucher"; - return namedParameterJdbcTemplate.query(selectSql, voucherResultSetRowMapper); + return reader.findAll(); } @Override public void deleteById(VoucherDeleteQuery query) { - String deleteSql = "DELETE FROM voucher WHERE voucher_id = :voucher_id"; - Map params = new HashMap<>(); - params.put("voucher_id", query.getVoucherId()); - - namedParameterJdbcTemplate.update(deleteSql, params); + store.deleteById(query); } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/reader/VoucherJdbcReader.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/reader/VoucherJdbcReader.java new file mode 100644 index 0000000000..7a6e928054 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/reader/VoucherJdbcReader.java @@ -0,0 +1,46 @@ +package com.wonu606.vouchermanager.repository.voucher.reader; + +import com.wonu606.vouchermanager.repository.voucher.query.VoucherFindQuery; +import com.wonu606.vouchermanager.repository.voucher.resultset.VoucherResultSet; +import com.wonu606.vouchermanager.repository.voucher.rowmapper.VoucherResultSetRowMapper; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import org.springframework.dao.EmptyResultDataAccessException; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; +import org.springframework.stereotype.Component; + +@Component +public class VoucherJdbcReader implements VoucherReader { + + NamedParameterJdbcTemplate namedParameterJdbcTemplate; + private final VoucherResultSetRowMapper rowMapper; + + public VoucherJdbcReader(NamedParameterJdbcTemplate namedParameterJdbcTemplate, + VoucherResultSetRowMapper rowMapper) { + this.namedParameterJdbcTemplate = namedParameterJdbcTemplate; + this.rowMapper = rowMapper; + } + + @Override + public Optional findById(VoucherFindQuery query) { + String selectionSql = "SELECT voucher_type, voucher_id, discount_value FROM voucher WHERE voucher_id = :voucher_id"; + Map params = new HashMap<>(); + params.put("voucher_id", query.getVoucherId()); + + try { + VoucherResultSet resultSet = namedParameterJdbcTemplate.queryForObject(selectionSql, + params, rowMapper); + return Optional.ofNullable(resultSet); + } catch (EmptyResultDataAccessException e) { + return Optional.empty(); + } + } + + @Override + public List findAll() { + String selectSql = "SELECT voucher_type, voucher_id, discount_value FROM voucher"; + return namedParameterJdbcTemplate.query(selectSql, rowMapper); + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/reader/VoucherReader.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/reader/VoucherReader.java new file mode 100644 index 0000000000..bd223fbc66 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/reader/VoucherReader.java @@ -0,0 +1,13 @@ +package com.wonu606.vouchermanager.repository.voucher.reader; + +import com.wonu606.vouchermanager.repository.voucher.query.VoucherFindQuery; +import com.wonu606.vouchermanager.repository.voucher.resultset.VoucherResultSet; +import java.util.List; +import java.util.Optional; + +public interface VoucherReader { + + Optional findById(VoucherFindQuery query); + + List findAll(); +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/rowmapper/VoucherResultSetRowMapper.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/rowmapper/VoucherResultSetRowMapper.java index 8f8ee737ab..645c46687c 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/rowmapper/VoucherResultSetRowMapper.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/rowmapper/VoucherResultSetRowMapper.java @@ -4,7 +4,9 @@ import java.sql.ResultSet; import java.sql.SQLException; import org.springframework.jdbc.core.RowMapper; +import org.springframework.stereotype.Component; +@Component public class VoucherResultSetRowMapper implements RowMapper { @Override diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/store/VoucherJdbcStore.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/store/VoucherJdbcStore.java new file mode 100644 index 0000000000..e03780ade3 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/store/VoucherJdbcStore.java @@ -0,0 +1,39 @@ +package com.wonu606.vouchermanager.repository.voucher.store; + +import com.wonu606.vouchermanager.repository.voucher.query.VoucherDeleteQuery; +import com.wonu606.vouchermanager.repository.voucher.query.VoucherInsertQuery; +import com.wonu606.vouchermanager.repository.voucher.resultset.VoucherInsertResultSet; +import java.util.HashMap; +import java.util.Map; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; +import org.springframework.stereotype.Component; + +@Component +public class VoucherJdbcStore implements VoucherStore { + + private final NamedParameterJdbcTemplate namedParameterJdbcTemplate; + + public VoucherJdbcStore(NamedParameterJdbcTemplate namedParameterJdbcTemplate) { + this.namedParameterJdbcTemplate = namedParameterJdbcTemplate; + } + + @Override + public VoucherInsertResultSet insert(VoucherInsertQuery query) { + String insertionSql = "INSERT INTO voucher (voucher_id, voucher_type, discount_value) VALUES (:voucher_id, :voucher_type, :discount_value)"; + Map params = new HashMap<>(); + params.put("voucher_type", query.getVoucherClassSimpleName()); + params.put("voucher_id", query.getVoucherId()); + params.put("discount_value", query.getDiscountValue()); + + return new VoucherInsertResultSet(namedParameterJdbcTemplate.update(insertionSql, params)); + } + + @Override + public void deleteById(VoucherDeleteQuery query) { + String deleteSql = "DELETE FROM voucher WHERE voucher_id = :voucher_id"; + Map params = new HashMap<>(); + params.put("voucher_id", query.getVoucherId()); + + namedParameterJdbcTemplate.update(deleteSql, params); + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/store/VoucherStore.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/store/VoucherStore.java new file mode 100644 index 0000000000..53265e467c --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/store/VoucherStore.java @@ -0,0 +1,12 @@ +package com.wonu606.vouchermanager.repository.voucher.store; + +import com.wonu606.vouchermanager.repository.voucher.query.VoucherDeleteQuery; +import com.wonu606.vouchermanager.repository.voucher.query.VoucherInsertQuery; +import com.wonu606.vouchermanager.repository.voucher.resultset.VoucherInsertResultSet; + +public interface VoucherStore { + + VoucherInsertResultSet insert(VoucherInsertQuery query); + + void deleteById(VoucherDeleteQuery query); +} From 1f20c70fcbfa50ba453f48d04550b8e3e4183c57 Mon Sep 17 00:00:00 2001 From: wonu606 Date: Thu, 20 Jul 2023 18:41:16 +0900 Subject: [PATCH 24/37] =?UTF-8?q?refactor(VoucherWalletRepository):=20read?= =?UTF-8?q?er=EC=99=80=20store=EB=A5=BC=20=ED=86=B5=ED=95=B4=20=ED=95=A8?= =?UTF-8?q?=EC=88=98=20=EC=8B=A4=ED=96=89=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../JdbcVoucherWalletRepository.java | 58 +++++-------------- .../reader/VoucherWalletJdbcReader.java | 45 ++++++++++++++ .../reader/VoucherWalletReader.java | 14 +++++ .../OwnedCustomerResultSetRowMapper.java} | 10 +++- .../OwnedVoucherResultSetRowMapper.java} | 10 +++- .../VoucherWalletReaderRowMapperManager.java | 28 +++++++++ .../store/VoucherWalletJdbcStore.java | 49 ++++++++++++++++ .../store/VoucherWalletStore.java | 16 +++++ .../vouchermanager/util/TypedRowMapper.java | 14 +++++ 9 files changed, 196 insertions(+), 48 deletions(-) create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/reader/VoucherWalletJdbcReader.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/reader/VoucherWalletReader.java rename voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/{rowmapper/OwnedCustomerResultSetSetRowMapper.java => reader/rowmapper/OwnedCustomerResultSetRowMapper.java} (51%) rename voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/{rowmapper/OwnedVoucherResultSetSetRowMapper.java => reader/rowmapper/OwnedVoucherResultSetRowMapper.java} (51%) create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/reader/rowmapper/VoucherWalletReaderRowMapperManager.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/store/VoucherWalletJdbcStore.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/store/VoucherWalletStore.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/util/TypedRowMapper.java diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/JdbcVoucherWalletRepository.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/JdbcVoucherWalletRepository.java index c7868e5a17..6f129a9235 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/JdbcVoucherWalletRepository.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/JdbcVoucherWalletRepository.java @@ -5,78 +5,48 @@ import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletDeleteQuery; import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletInsertQuery; import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletUpdateQuery; +import com.wonu606.vouchermanager.repository.voucherwallet.reader.VoucherWalletReader; import com.wonu606.vouchermanager.repository.voucherwallet.resultset.OwnedCustomerResultSet; import com.wonu606.vouchermanager.repository.voucherwallet.resultset.OwnedVoucherResultSet; import com.wonu606.vouchermanager.repository.voucherwallet.resultset.WalletInsertResultSet; import com.wonu606.vouchermanager.repository.voucherwallet.resultset.WalletUpdateResultSet; -import com.wonu606.vouchermanager.repository.voucherwallet.rowmapper.OwnedCustomerResultSetSetRowMapper; -import com.wonu606.vouchermanager.repository.voucherwallet.rowmapper.OwnedVoucherResultSetSetRowMapper; -import java.util.HashMap; +import com.wonu606.vouchermanager.repository.voucherwallet.store.VoucherWalletStore; import java.util.List; -import java.util.Map; -import javax.sql.DataSource; -import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; @Component +@Transactional public class JdbcVoucherWalletRepository implements VoucherWalletRepository { - private final NamedParameterJdbcTemplate jdbcTemplate; + private final VoucherWalletReader reader; + private final VoucherWalletStore store; - private final OwnedVoucherResultSetSetRowMapper ownedVoucherResultSetSetRowMapper; - private final OwnedCustomerResultSetSetRowMapper ownedCustomerResultSetSetRowMapper; - - - public JdbcVoucherWalletRepository(DataSource dataSource) { - this.jdbcTemplate = new NamedParameterJdbcTemplate(dataSource); - - ownedVoucherResultSetSetRowMapper = new OwnedVoucherResultSetSetRowMapper(); - ownedCustomerResultSetSetRowMapper = new OwnedCustomerResultSetSetRowMapper(); + public JdbcVoucherWalletRepository(VoucherWalletReader reader, VoucherWalletStore store) { + this.reader = reader; + this.store = store; } @Override public List findOwnedVouchersByCustomer(OwnedVouchersQuery query) { - String selectionSql = "SELECT voucher_id FROM voucher_wallet WHERE customer_id = :customer_id"; - Map params = new HashMap<>(); - params.put("customer_id", query.getCustomerId()); - - return jdbcTemplate.query(selectionSql, params, ownedVoucherResultSetSetRowMapper); + return reader.findOwnedVouchersByCustomer(query); } @Override public void delete(WalletDeleteQuery query) { - String deletionSql = "DELETE FROM voucher_wallet WHERE customer_id = :customer_id AND voucher_id = :voucher_id"; - Map params = new HashMap<>(); - params.put("customer_id", query.getCustomerId()); - params.put("voucher_id", query.getVoucherId()); - - jdbcTemplate.update(deletionSql, params); + store.delete(query); } public WalletInsertResultSet insert(WalletInsertQuery query) { - String insertionSql = "INSERT INTO voucher_wallet (voucher_id, customer_id) VALUES (:voucher_id, NULL)"; - Map params = new HashMap<>(); - params.put("voucher_id", query.getVoucherId()); - - int resultSet = jdbcTemplate.update(insertionSql, params); - return new WalletInsertResultSet(resultSet); + store.insert(query); } @Override public List findOwnedCustomersByVoucher(OwnedCustomersQuery query) { - String selectionSql = "SELECT customer_id FROM voucher_wallet WHERE voucher_id = :voucher_id"; - Map params = new HashMap<>(); - params.put("voucher_id", query.getVoucherId()); - - return jdbcTemplate.query(selectionSql, ownedCustomerResultSetSetRowMapper); + return reader.findOwnedCustomersByVoucher(query); } public WalletUpdateResultSet update(WalletUpdateQuery query) { - String insertSql = "INSERT INTO voucher_wallet (customer_id, voucher_id) VALUES (:customer_id, :voucher_id)"; - Map params = new HashMap<>(); - params.put("customer_id", query.getCustomerId()); - params.put("voucher_id", query.getVoucherId()); - - return new WalletUpdateResultSet(jdbcTemplate.update(insertSql, params)); + return store.update(query); } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/reader/VoucherWalletJdbcReader.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/reader/VoucherWalletJdbcReader.java new file mode 100644 index 0000000000..58fcb9afd0 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/reader/VoucherWalletJdbcReader.java @@ -0,0 +1,45 @@ +package com.wonu606.vouchermanager.repository.voucherwallet.reader; + +import com.wonu606.vouchermanager.repository.voucherwallet.query.OwnedCustomersQuery; +import com.wonu606.vouchermanager.repository.voucherwallet.query.OwnedVouchersQuery; +import com.wonu606.vouchermanager.repository.voucherwallet.reader.rowmapper.VoucherWalletReaderRowMapperManager; +import com.wonu606.vouchermanager.repository.voucherwallet.resultset.OwnedCustomerResultSet; +import com.wonu606.vouchermanager.repository.voucherwallet.resultset.OwnedVoucherResultSet; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; +import org.springframework.stereotype.Component; + +@Component +public class VoucherWalletJdbcReader implements VoucherWalletReader { + + private final NamedParameterJdbcTemplate jdbcTemplate; + private final VoucherWalletReaderRowMapperManager rowMapperManager; + + public VoucherWalletJdbcReader(NamedParameterJdbcTemplate jdbcTemplate, + VoucherWalletReaderRowMapperManager rowMapperManager) { + this.jdbcTemplate = jdbcTemplate; + this.rowMapperManager = rowMapperManager; + } + + @Override + public List findOwnedVouchersByCustomer(OwnedVouchersQuery query) { + String selectionSql = "SELECT voucher_id FROM voucher_wallet WHERE customer_id = :customer_id"; + Map params = new HashMap<>(); + params.put("customer_id", query.getCustomerId()); + + return jdbcTemplate.query(selectionSql, params, + rowMapperManager.getRowMapperForType(OwnedVoucherResultSet.class)); + } + + @Override + public List findOwnedCustomersByVoucher(OwnedCustomersQuery query) { + String selectionSql = "SELECT customer_id FROM voucher_wallet WHERE voucher_id = :voucher_id"; + Map params = new HashMap<>(); + params.put("voucher_id", query.getVoucherId()); + + return jdbcTemplate.query(selectionSql, + rowMapperManager.getRowMapperForType(OwnedCustomerResultSet.class)); + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/reader/VoucherWalletReader.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/reader/VoucherWalletReader.java new file mode 100644 index 0000000000..53e3cad671 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/reader/VoucherWalletReader.java @@ -0,0 +1,14 @@ +package com.wonu606.vouchermanager.repository.voucherwallet.reader; + +import com.wonu606.vouchermanager.repository.voucherwallet.query.OwnedCustomersQuery; +import com.wonu606.vouchermanager.repository.voucherwallet.query.OwnedVouchersQuery; +import com.wonu606.vouchermanager.repository.voucherwallet.resultset.OwnedCustomerResultSet; +import com.wonu606.vouchermanager.repository.voucherwallet.resultset.OwnedVoucherResultSet; +import java.util.List; + +public interface VoucherWalletReader { + + List findOwnedVouchersByCustomer(OwnedVouchersQuery query); + + List findOwnedCustomersByVoucher(OwnedCustomersQuery query); +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/rowmapper/OwnedCustomerResultSetSetRowMapper.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/reader/rowmapper/OwnedCustomerResultSetRowMapper.java similarity index 51% rename from voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/rowmapper/OwnedCustomerResultSetSetRowMapper.java rename to voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/reader/rowmapper/OwnedCustomerResultSetRowMapper.java index 742b36d286..b82b3d0698 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/rowmapper/OwnedCustomerResultSetSetRowMapper.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/reader/rowmapper/OwnedCustomerResultSetRowMapper.java @@ -1,14 +1,20 @@ -package com.wonu606.vouchermanager.repository.voucherwallet.rowmapper; +package com.wonu606.vouchermanager.repository.voucherwallet.reader.rowmapper; import com.wonu606.vouchermanager.repository.voucherwallet.resultset.OwnedCustomerResultSet; +import com.wonu606.vouchermanager.util.TypedRowMapper; import java.sql.ResultSet; import java.sql.SQLException; import org.springframework.jdbc.core.RowMapper; -public class OwnedCustomerResultSetSetRowMapper implements RowMapper { +public class OwnedCustomerResultSetRowMapper implements TypedRowMapper { @Override public OwnedCustomerResultSet mapRow(ResultSet rs, int rowNum) throws SQLException { return new OwnedCustomerResultSet(rs.getString("customer_id")); } + + @Override + public Class getTargetType() { + return OwnedCustomerResultSet.class; + } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/rowmapper/OwnedVoucherResultSetSetRowMapper.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/reader/rowmapper/OwnedVoucherResultSetRowMapper.java similarity index 51% rename from voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/rowmapper/OwnedVoucherResultSetSetRowMapper.java rename to voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/reader/rowmapper/OwnedVoucherResultSetRowMapper.java index 6511d5db8e..feacc460f4 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/rowmapper/OwnedVoucherResultSetSetRowMapper.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/reader/rowmapper/OwnedVoucherResultSetRowMapper.java @@ -1,14 +1,20 @@ -package com.wonu606.vouchermanager.repository.voucherwallet.rowmapper; +package com.wonu606.vouchermanager.repository.voucherwallet.reader.rowmapper; import com.wonu606.vouchermanager.repository.voucherwallet.resultset.OwnedVoucherResultSet; +import com.wonu606.vouchermanager.util.TypedRowMapper; import java.sql.ResultSet; import java.sql.SQLException; import org.springframework.jdbc.core.RowMapper; -public class OwnedVoucherResultSetSetRowMapper implements RowMapper { +public class OwnedVoucherResultSetRowMapper implements TypedRowMapper { @Override public OwnedVoucherResultSet mapRow(ResultSet rs, int rowNum) throws SQLException { return new OwnedVoucherResultSet(rs.getString("voucher_id")); } + + @Override + public Class getTargetType() { + return OwnedVoucherResultSet.class; + } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/reader/rowmapper/VoucherWalletReaderRowMapperManager.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/reader/rowmapper/VoucherWalletReaderRowMapperManager.java new file mode 100644 index 0000000000..7fecb5c5b3 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/reader/rowmapper/VoucherWalletReaderRowMapperManager.java @@ -0,0 +1,28 @@ +package com.wonu606.vouchermanager.repository.voucherwallet.reader.rowmapper; + +import com.wonu606.vouchermanager.util.TypedRowMapper; +import java.util.ArrayList; +import java.util.List; +import org.springframework.stereotype.Component; + +@Component +public class VoucherWalletReaderRowMapperManager { + + private final List> rowMapperList; + + public VoucherWalletReaderRowMapperManager() { + rowMapperList = new ArrayList<>(); + rowMapperList.add(new OwnedCustomerResultSetRowMapper()); + rowMapperList.add(new OwnedVoucherResultSetRowMapper()); + } + + @SuppressWarnings("unchecked") + public TypedRowMapper getRowMapperForType(Class targetType) { + for (TypedRowMapper rowMapper : rowMapperList) { + if (rowMapper.canConvert(targetType)) { + return (TypedRowMapper) rowMapper; + } + } + throw new IllegalArgumentException(targetType.getName() + "으로 변환할 수 없습니다."); + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/store/VoucherWalletJdbcStore.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/store/VoucherWalletJdbcStore.java new file mode 100644 index 0000000000..046dfe4273 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/store/VoucherWalletJdbcStore.java @@ -0,0 +1,49 @@ +package com.wonu606.vouchermanager.repository.voucherwallet.store; + +import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletDeleteQuery; +import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletInsertQuery; +import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletUpdateQuery; +import com.wonu606.vouchermanager.repository.voucherwallet.resultset.WalletInsertResultSet; +import com.wonu606.vouchermanager.repository.voucherwallet.resultset.WalletUpdateResultSet; +import java.util.HashMap; +import java.util.Map; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; +import org.springframework.stereotype.Component; + +@Component +public class VoucherWalletJdbcStore implements VoucherWalletStore { + + private final NamedParameterJdbcTemplate jdbcTemplate; + + public VoucherWalletJdbcStore(NamedParameterJdbcTemplate jdbcTemplate) { + this.jdbcTemplate = jdbcTemplate; + } + + @Override + public void delete(WalletDeleteQuery query) { + String deletionSql = "DELETE FROM voucher_wallet WHERE customer_id = :customer_id AND voucher_id = :voucher_id"; + Map params = new HashMap<>(); + params.put("customer_id", query.getCustomerId()); + params.put("voucher_id", query.getVoucherId()); + + jdbcTemplate.update(deletionSql, params); + } + + public WalletInsertResultSet insert(WalletInsertQuery query) { + String insertionSql = "INSERT INTO voucher_wallet (voucher_id, customer_id) VALUES (:voucher_id, NULL)"; + Map params = new HashMap<>(); + params.put("voucher_id", query.getVoucherId()); + + int resultSet = jdbcTemplate.update(insertionSql, params); + return new WalletInsertResultSet(resultSet); + } + + public WalletUpdateResultSet update(WalletUpdateQuery query) { + String insertSql = "INSERT INTO voucher_wallet (customer_id, voucher_id) VALUES (:customer_id, :voucher_id)"; + Map params = new HashMap<>(); + params.put("customer_id", query.getCustomerId()); + params.put("voucher_id", query.getVoucherId()); + + return new WalletUpdateResultSet(jdbcTemplate.update(insertSql, params)); + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/store/VoucherWalletStore.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/store/VoucherWalletStore.java new file mode 100644 index 0000000000..ffcedc947f --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/store/VoucherWalletStore.java @@ -0,0 +1,16 @@ +package com.wonu606.vouchermanager.repository.voucherwallet.store; + +import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletDeleteQuery; +import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletInsertQuery; +import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletUpdateQuery; +import com.wonu606.vouchermanager.repository.voucherwallet.resultset.WalletInsertResultSet; +import com.wonu606.vouchermanager.repository.voucherwallet.resultset.WalletUpdateResultSet; + +public interface VoucherWalletStore { + + void delete(WalletDeleteQuery query); + + WalletInsertResultSet insert(WalletInsertQuery wallet); + + WalletUpdateResultSet update(WalletUpdateQuery wallet); +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/util/TypedRowMapper.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/util/TypedRowMapper.java new file mode 100644 index 0000000000..bd43dd7a84 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/util/TypedRowMapper.java @@ -0,0 +1,14 @@ +package com.wonu606.vouchermanager.util; + +import java.sql.ResultSet; +import java.sql.SQLException; +import org.springframework.jdbc.core.RowMapper; + +public interface TypedRowMapper extends RowMapper { + + Class getTargetType(); + + default boolean canConvert(Class targetType) { + return getTargetType() == targetType; + } +} From 933ebfc6a4af6b5b9aeabac00f1d475988c5126f Mon Sep 17 00:00:00 2001 From: wonu606 Date: Thu, 20 Jul 2023 18:47:14 +0900 Subject: [PATCH 25/37] =?UTF-8?q?refactor:=20Reader=EC=97=90=EC=84=9C=20Ro?= =?UTF-8?q?wMapperManager=EB=A5=BC=20=ED=86=B5=ED=95=B4=20RowMapper?= =?UTF-8?q?=EB=A5=BC=20=EA=B0=80=EC=A0=B8=EC=98=A4=EB=8F=84=EB=A1=9D=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../customer/reader/CustomerJdbcReader.java | 11 ++++---- .../CustomerReaderRowMapperManager.java | 27 +++++++++++++++++++ .../rowmapper/CustomerResultSetRowMapper.java | 11 +++++--- .../voucher/reader/VoucherJdbcReader.java | 15 ++++++----- .../VoucherReaderRowMapperManager.java | 27 +++++++++++++++++++ .../rowmapper/VoucherResultSetRowMapper.java | 10 +++++-- 6 files changed, 84 insertions(+), 17 deletions(-) create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/reader/rowmapper/CustomerReaderRowMapperManager.java rename voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/{ => reader}/rowmapper/CustomerResultSetRowMapper.java (58%) create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/reader/rowmapper/VoucherReaderRowMapperManager.java rename voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/{ => reader}/rowmapper/VoucherResultSetRowMapper.java (65%) diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/reader/CustomerJdbcReader.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/reader/CustomerJdbcReader.java index 127f713d65..fc06c2e002 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/reader/CustomerJdbcReader.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/reader/CustomerJdbcReader.java @@ -1,7 +1,7 @@ package com.wonu606.vouchermanager.repository.customer.reader; +import com.wonu606.vouchermanager.repository.customer.reader.rowmapper.CustomerReaderRowMapperManager; import com.wonu606.vouchermanager.repository.customer.resultset.CustomerResultSet; -import com.wonu606.vouchermanager.repository.customer.rowmapper.CustomerResultSetRowMapper; import java.util.List; import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; import org.springframework.stereotype.Component; @@ -10,17 +10,18 @@ public class CustomerJdbcReader implements CustomerReader { private final NamedParameterJdbcTemplate namedParameterJdbcTemplate; - private final CustomerResultSetRowMapper rowMapper; + private final CustomerReaderRowMapperManager rowMapperManager; public CustomerJdbcReader(NamedParameterJdbcTemplate namedParameterJdbcTemplate, - CustomerResultSetRowMapper rowMapper) { + CustomerReaderRowMapperManager rowMapperManager) { this.namedParameterJdbcTemplate = namedParameterJdbcTemplate; - this.rowMapper = rowMapper; + this.rowMapperManager = rowMapperManager; } @Override public List findAll() { String selectionSql = "SELECT email, nickname FROM customer"; - return namedParameterJdbcTemplate.query(selectionSql, rowMapper); + return namedParameterJdbcTemplate.query(selectionSql, + rowMapperManager.getRowMapperForType(CustomerResultSet.class)); } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/reader/rowmapper/CustomerReaderRowMapperManager.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/reader/rowmapper/CustomerReaderRowMapperManager.java new file mode 100644 index 0000000000..931816e02d --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/reader/rowmapper/CustomerReaderRowMapperManager.java @@ -0,0 +1,27 @@ +package com.wonu606.vouchermanager.repository.customer.reader.rowmapper; + +import com.wonu606.vouchermanager.util.TypedRowMapper; +import java.util.ArrayList; +import java.util.List; +import org.springframework.stereotype.Component; + +@Component +public class CustomerReaderRowMapperManager { + + private final List> rowMapperList; + + public CustomerReaderRowMapperManager() { + rowMapperList = new ArrayList<>(); + rowMapperList.add(new CustomerResultSetRowMapper()); + } + + @SuppressWarnings("unchecked") + public TypedRowMapper getRowMapperForType(Class targetType) { + for (TypedRowMapper rowMapper : rowMapperList) { + if (rowMapper.canConvert(targetType)) { + return (TypedRowMapper) rowMapper; + } + } + throw new IllegalArgumentException(targetType.getName() + "으로 변환할 수 없습니다."); + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/rowmapper/CustomerResultSetRowMapper.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/reader/rowmapper/CustomerResultSetRowMapper.java similarity index 58% rename from voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/rowmapper/CustomerResultSetRowMapper.java rename to voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/reader/rowmapper/CustomerResultSetRowMapper.java index a0658cc44d..0a6b71f2a6 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/rowmapper/CustomerResultSetRowMapper.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/customer/reader/rowmapper/CustomerResultSetRowMapper.java @@ -1,13 +1,13 @@ -package com.wonu606.vouchermanager.repository.customer.rowmapper; +package com.wonu606.vouchermanager.repository.customer.reader.rowmapper; import com.wonu606.vouchermanager.repository.customer.resultset.CustomerResultSet; +import com.wonu606.vouchermanager.util.TypedRowMapper; import java.sql.ResultSet; import java.sql.SQLException; -import org.springframework.jdbc.core.RowMapper; import org.springframework.stereotype.Component; @Component -public class CustomerResultSetRowMapper implements RowMapper { +public class CustomerResultSetRowMapper implements TypedRowMapper { @Override public CustomerResultSet mapRow(ResultSet rs, int rowNum) throws SQLException { @@ -16,4 +16,9 @@ public CustomerResultSet mapRow(ResultSet rs, int rowNum) throws SQLException { return new CustomerResultSet(email, nickname); } + + @Override + public Class getTargetType() { + return CustomerResultSet.class; + } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/reader/VoucherJdbcReader.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/reader/VoucherJdbcReader.java index 7a6e928054..858e79d92a 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/reader/VoucherJdbcReader.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/reader/VoucherJdbcReader.java @@ -1,8 +1,8 @@ package com.wonu606.vouchermanager.repository.voucher.reader; import com.wonu606.vouchermanager.repository.voucher.query.VoucherFindQuery; +import com.wonu606.vouchermanager.repository.voucher.reader.rowmapper.VoucherReaderRowMapperManager; import com.wonu606.vouchermanager.repository.voucher.resultset.VoucherResultSet; -import com.wonu606.vouchermanager.repository.voucher.rowmapper.VoucherResultSetRowMapper; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -14,13 +14,13 @@ @Component public class VoucherJdbcReader implements VoucherReader { - NamedParameterJdbcTemplate namedParameterJdbcTemplate; - private final VoucherResultSetRowMapper rowMapper; + private final NamedParameterJdbcTemplate namedParameterJdbcTemplate; + private final VoucherReaderRowMapperManager rowMapperManager; public VoucherJdbcReader(NamedParameterJdbcTemplate namedParameterJdbcTemplate, - VoucherResultSetRowMapper rowMapper) { + VoucherReaderRowMapperManager rowMapperManager) { this.namedParameterJdbcTemplate = namedParameterJdbcTemplate; - this.rowMapper = rowMapper; + this.rowMapperManager = rowMapperManager; } @Override @@ -31,7 +31,7 @@ public Optional findById(VoucherFindQuery query) { try { VoucherResultSet resultSet = namedParameterJdbcTemplate.queryForObject(selectionSql, - params, rowMapper); + params, rowMapperManager.getRowMapperForType(VoucherResultSet.class)); return Optional.ofNullable(resultSet); } catch (EmptyResultDataAccessException e) { return Optional.empty(); @@ -41,6 +41,7 @@ public Optional findById(VoucherFindQuery query) { @Override public List findAll() { String selectSql = "SELECT voucher_type, voucher_id, discount_value FROM voucher"; - return namedParameterJdbcTemplate.query(selectSql, rowMapper); + return namedParameterJdbcTemplate.query(selectSql, + rowMapperManager.getRowMapperForType(VoucherResultSet.class)); } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/reader/rowmapper/VoucherReaderRowMapperManager.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/reader/rowmapper/VoucherReaderRowMapperManager.java new file mode 100644 index 0000000000..c169b09615 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/reader/rowmapper/VoucherReaderRowMapperManager.java @@ -0,0 +1,27 @@ +package com.wonu606.vouchermanager.repository.voucher.reader.rowmapper; + +import com.wonu606.vouchermanager.util.TypedRowMapper; +import java.util.ArrayList; +import java.util.List; +import org.springframework.stereotype.Component; + +@Component +public class VoucherReaderRowMapperManager { + + private final List> rowMapperList; + + public VoucherReaderRowMapperManager() { + rowMapperList = new ArrayList<>(); + rowMapperList.add(new VoucherResultSetRowMapper()); + } + + @SuppressWarnings("unchecked") + public TypedRowMapper getRowMapperForType(Class targetType) { + for (TypedRowMapper rowMapper : rowMapperList) { + if (rowMapper.canConvert(targetType)) { + return (TypedRowMapper) rowMapper; + } + } + throw new IllegalArgumentException(targetType.getName() + "으로 변환할 수 없습니다."); + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/rowmapper/VoucherResultSetRowMapper.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/reader/rowmapper/VoucherResultSetRowMapper.java similarity index 65% rename from voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/rowmapper/VoucherResultSetRowMapper.java rename to voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/reader/rowmapper/VoucherResultSetRowMapper.java index 645c46687c..881e83ff71 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/rowmapper/VoucherResultSetRowMapper.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/reader/rowmapper/VoucherResultSetRowMapper.java @@ -1,13 +1,14 @@ -package com.wonu606.vouchermanager.repository.voucher.rowmapper; +package com.wonu606.vouchermanager.repository.voucher.reader.rowmapper; import com.wonu606.vouchermanager.repository.voucher.resultset.VoucherResultSet; +import com.wonu606.vouchermanager.util.TypedRowMapper; import java.sql.ResultSet; import java.sql.SQLException; import org.springframework.jdbc.core.RowMapper; import org.springframework.stereotype.Component; @Component -public class VoucherResultSetRowMapper implements RowMapper { +public class VoucherResultSetRowMapper implements TypedRowMapper { @Override public VoucherResultSet mapRow(ResultSet rs, int rowNum) throws SQLException { @@ -16,4 +17,9 @@ public VoucherResultSet mapRow(ResultSet rs, int rowNum) throws SQLException { double discountValue = rs.getDouble("discount_value"); return new VoucherResultSet(voucherSimpleName, uuid, discountValue); } + + @Override + public Class getTargetType() { + return VoucherResultSet.class; + } } From 508bcd84eac949aa6c3a264479688dca0d6d3d1d Mon Sep 17 00:00:00 2001 From: wonu606 Date: Thu, 20 Jul 2023 19:00:34 +0900 Subject: [PATCH 26/37] =?UTF-8?q?feat:=20CustomerController=EC=97=90?= =?UTF-8?q?=EC=84=9C=20=EA=B0=92=EC=9D=84=20String=EC=9C=BC=EB=A1=9C?= =?UTF-8?q?=EB=A7=8C=20=EB=B0=98=ED=99=98=ED=95=98=EB=8F=84=EB=A1=9D=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- voucher-manager/build.gradle | 3 ++ .../customer/CustomerControllerCable.java | 8 ++--- .../customer/io/CustomerConsoleIo.java | 10 +++--- .../customer/CustomerController.java | 33 +++++++++++++++---- 4 files changed, 37 insertions(+), 17 deletions(-) diff --git a/voucher-manager/build.gradle b/voucher-manager/build.gradle index 3912a40870..e357d69c04 100644 --- a/voucher-manager/build.gradle +++ b/voucher-manager/build.gradle @@ -28,6 +28,9 @@ dependencies { testImplementation 'org.assertj:assertj-core:3.24.2' runtimeOnly 'com.mysql:mysql-connector-j' testImplementation 'com.h2database:h2' + // https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind + implementation 'com.fasterxml.jackson.core:jackson-databind:2.0.1' + } tasks.named('test') { diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/customer/CustomerControllerCable.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/customer/CustomerControllerCable.java index 8180e798a9..71e40a0f8c 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/customer/CustomerControllerCable.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/customer/CustomerControllerCable.java @@ -5,8 +5,6 @@ import com.wonu606.vouchermanager.controller.customer.request.CustomerCreateRequest; import com.wonu606.vouchermanager.controller.customer.request.OwnedVouchersRequest; import com.wonu606.vouchermanager.controller.customer.request.WalletDeleteRequest; -import com.wonu606.vouchermanager.controller.customer.response.OwnedVoucherResponse; -import com.wonu606.vouchermanager.controller.customer.response.CustomerListGetResponse; import org.springframework.stereotype.Component; @Component @@ -43,13 +41,13 @@ private void executeMenuAction(CustomerControllerMenu menu) { return; case LIST: - CustomerListGetResponse customerListGetResponse = controller.getCustomerList(); - consoleIo.displayCustomerList(customerListGetResponse); + String customerListResponse = controller.getCustomerList(); + consoleIo.displayCustomerList(customerListResponse); return; case VOUCHER_LIST: String searchedCustomerId = consoleIo.readString("CustomerId"); - OwnedVoucherResponse ownedVoucherResponse = controller.getOwnedVouchersByCustomer( + String ownedVoucherResponse = controller.getOwnedVouchersByCustomer( new OwnedVouchersRequest(searchedCustomerId)); consoleIo.displayVoucherList(ownedVoucherResponse); return; diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/customer/io/CustomerConsoleIo.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/customer/io/CustomerConsoleIo.java index bdce5357ea..292fdf1dd4 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/customer/io/CustomerConsoleIo.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/customer/io/CustomerConsoleIo.java @@ -29,15 +29,13 @@ protected void displayMenu() { printer.displayMessage(String.format(lineFormat, n, n))); } - public void displayCustomerList(CustomerListGetResponse response) { + public void displayCustomerList(String response) { printer.displayMessage("=== 보유한 Customer 리스트 ==="); - List emails = response.getEmails(); - emails.forEach(printer::displayMessage); + printer.displayMessage(response); } - public void displayVoucherList(OwnedVoucherResponse response) { + public void displayVoucherList(String response) { printer.displayMessage("=== 보유한 바우처 리스트 ==="); - List voucherIds = response.getVoucherIds(); - voucherIds.forEach(printer::displayMessage); + printer.displayMessage(response); } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/CustomerController.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/CustomerController.java index e0f1f27955..6859e51ffd 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/CustomerController.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/CustomerController.java @@ -1,5 +1,6 @@ package com.wonu606.vouchermanager.controller.customer; +import com.fasterxml.jackson.databind.ObjectMapper; import com.wonu606.vouchermanager.controller.customer.converter.CustomerControllerConverterManager; import com.wonu606.vouchermanager.controller.customer.request.CustomerCreateRequest; import com.wonu606.vouchermanager.controller.customer.request.OwnedVouchersRequest; @@ -14,6 +15,7 @@ import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedVouchersParam; import com.wonu606.vouchermanager.service.voucherwallet.param.WalletDeleteParam; import com.wonu606.vouchermanager.service.voucherwallet.result.OwnedVoucherResult; +import java.io.IOException; import java.util.List; import java.util.stream.Collectors; import org.springframework.stereotype.Component; @@ -29,28 +31,47 @@ public CustomerController(CustomerService service) { converterManager = new CustomerControllerConverterManager(); } - public CustomerCreateResponse createCustomer(CustomerCreateRequest request) { + public String createCustomer(CustomerCreateRequest request) { CustomerCreateParam param = converterManager.convert(request, CustomerCreateParam.class); CustomerCreateResult result = service.createCustomer(param); - return converterManager.convert(result, CustomerCreateResponse.class); + CustomerCreateResponse response = converterManager.convert(result, + CustomerCreateResponse.class); + ObjectMapper objectMapper = new ObjectMapper(); + try { + return objectMapper.writeValueAsString(response); + } catch (IOException e) { + throw new RuntimeException(e); + } } - public List getCustomerList() { + public String getCustomerList() { List results = service.getCustomerList(); - return results.stream() + List responses = results.stream() .map(rs -> converterManager.convert(rs, CustomerResponse.class)) .collect(Collectors.toList()); + ObjectMapper objectMapper = new ObjectMapper(); + try { + return objectMapper.writeValueAsString(responses); + } catch (IOException e) { + throw new RuntimeException(e); + } } - public List getOwnedVouchersByCustomer(OwnedVouchersRequest request) { + public String getOwnedVouchersByCustomer(OwnedVouchersRequest request) { OwnedVouchersParam param = converterManager.convert(request, OwnedVouchersParam.class); List results = service.findOwnedVouchersByCustomer(param); - return results.stream() + List responses = results.stream() .map(rs -> converterManager.convert(rs, OwnedVoucherResponse.class)) .collect(Collectors.toList()); + ObjectMapper objectMapper = new ObjectMapper(); + try { + return objectMapper.writeValueAsString(responses); + } catch (IOException e) { + throw new RuntimeException(e); + } } public void deleteWallet(WalletDeleteRequest request) { From ad1fbd56894cee9ce4a9ad21bbb0f90c8fc7524a Mon Sep 17 00:00:00 2001 From: wonu606 Date: Thu, 20 Jul 2023 20:18:51 +0900 Subject: [PATCH 27/37] =?UTF-8?q?feat:=20VoucherController=EC=97=90?= =?UTF-8?q?=EC=84=9C=20=EA=B0=92=EC=9D=84=20String=EC=9C=BC=EB=A1=9C?= =?UTF-8?q?=EB=A7=8C=20=EB=B0=98=ED=99=98=ED=95=98=EB=8F=84=EB=A1=9D=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../customer/io/CustomerConsoleIo.java | 3 -- .../voucher/VoucherControllerCable.java | 7 ++-- .../voucher/io/VoucherConsoleIo.java | 10 +++--- .../controller/voucher/VoucherController.java | 33 +++++++++++++++---- .../JdbcVoucherWalletRepository.java | 2 +- 5 files changed, 35 insertions(+), 20 deletions(-) diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/customer/io/CustomerConsoleIo.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/customer/io/CustomerConsoleIo.java index 292fdf1dd4..bd5899d1fd 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/customer/io/CustomerConsoleIo.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/customer/io/CustomerConsoleIo.java @@ -4,9 +4,6 @@ import com.wonu606.vouchermanager.console.ConsoleInput; import com.wonu606.vouchermanager.console.ConsolePrinter; import com.wonu606.vouchermanager.console.controllercable.customer.CustomerControllerMenu; -import com.wonu606.vouchermanager.controller.customer.response.OwnedVoucherResponse; -import com.wonu606.vouchermanager.controller.customer.response.CustomerListGetResponse; -import java.util.List; import org.springframework.stereotype.Component; @Component diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/voucher/VoucherControllerCable.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/voucher/VoucherControllerCable.java index 296d9e7243..c1ba428f7b 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/voucher/VoucherControllerCable.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/voucher/VoucherControllerCable.java @@ -39,7 +39,7 @@ private void executeMenuAction(VoucherControllerMenu menu) { return; case LIST: - VoucherResponse voucherResponse = controller.getVoucherList(); + String voucherResponse = controller.getVoucherList(); consoleIo.displayVoucherList(voucherResponse); return; @@ -54,7 +54,7 @@ private void executeMenuAction(VoucherControllerMenu menu) { case CUSTOMER_LIST: String voucherId = consoleIo.readString("VoucherId"); - OwnedCustomerResponse ownedCustomerResponse = controller.getOwnedCustomersByVoucher( + String ownedCustomerResponse = controller.getOwnedCustomersByVoucher( new OwnedCustomersRequest(voucherId)); consoleIo.displayCustomerList(ownedCustomerResponse); return; @@ -66,8 +66,7 @@ private void executeMenuAction(VoucherControllerMenu menu) { private WalletAssignRequest createVoucherWalletCreateRequest() { String uuid = consoleIo.readString("Voucher UUID"); - String emailAddress = consoleIo.readString("Customer EmailAddress"); - return new WalletAssignRequest(uuid, emailAddress); + return new WalletAssignRequest(uuid); } private VoucherCreateRequest createVoucherCreateRequest() { diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/voucher/io/VoucherConsoleIo.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/voucher/io/VoucherConsoleIo.java index 88af255be9..5d02bf1c38 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/voucher/io/VoucherConsoleIo.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/voucher/io/VoucherConsoleIo.java @@ -28,16 +28,14 @@ public String selectVoucherType() { return input.readString(VoucherConsoleType.getAllNames(), "Type"); } - public void displayVoucherList(VoucherResponse voucherList) { + public void displayVoucherList(String voucherList) { printer.displayMessage("=== 바우처 리스트 ==="); - List voucherIds = voucherList.getVoucherIds(); - voucherIds.forEach(printer::displayMessage); + printer.displayMessage(voucherList); } - public void displayCustomerList(OwnedCustomerResponse response) { + public void displayCustomerList(String response) { printer.displayMessage("=== 보유한 Customer 리스트 ==="); - List emails = response.getEmails(); - emails.forEach(printer::displayMessage); + printer.displayMessage(response); } protected void displayMenu() { diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/VoucherController.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/VoucherController.java index c4bef4d765..c09fd53dab 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/VoucherController.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/VoucherController.java @@ -1,5 +1,6 @@ package com.wonu606.vouchermanager.controller.voucher; +import com.fasterxml.jackson.databind.ObjectMapper; import com.wonu606.vouchermanager.controller.voucher.converter.VoucherControllerConverterManager; import com.wonu606.vouchermanager.controller.voucher.reqeust.OwnedCustomersRequest; import com.wonu606.vouchermanager.controller.voucher.reqeust.VoucherCreateRequest; @@ -14,6 +15,7 @@ import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedCustomersParam; import com.wonu606.vouchermanager.service.voucherwallet.param.WalletAssignParam; import com.wonu606.vouchermanager.service.voucherwallet.result.OwnedCustomerResult; +import java.io.IOException; import java.util.List; import java.util.stream.Collectors; import org.springframework.stereotype.Component; @@ -29,28 +31,47 @@ public VoucherController(VoucherService service) { converterManager = new VoucherControllerConverterManager(); } - public VoucherCreateResponse createVoucher(VoucherCreateRequest request) { + public String createVoucher(VoucherCreateRequest request) { VoucherCreateParam param = converterManager.convert(request, VoucherCreateParam.class); VoucherCreateResult result = service.createVoucher(param); - return converterManager.convert(result, VoucherCreateResponse.class); + VoucherCreateResponse response = converterManager.convert(result, + VoucherCreateResponse.class); + ObjectMapper objectMapper = new ObjectMapper(); + try { + return objectMapper.writeValueAsString(response); + } catch (IOException e) { + throw new RuntimeException(e); + } } - public List getVoucherList() { + public String getVoucherList() { List results = service.getVoucherList(); - return results.stream() + List responses = results.stream() .map(rs -> converterManager.convert(rs, VoucherResponse.class)) .collect(Collectors.toList()); + ObjectMapper objectMapper = new ObjectMapper(); + try { + return objectMapper.writeValueAsString(responses); + } catch (IOException e) { + throw new RuntimeException(e); + } } - public List getOwnedCustomersByVoucher(OwnedCustomersRequest request) { + public String getOwnedCustomersByVoucher(OwnedCustomersRequest request) { OwnedCustomersParam param = converterManager.convert(request, OwnedCustomersParam.class); List results = service.findOwnedCustomersByVoucher(param); - return results.stream() + List responses = results.stream() .map(rs -> converterManager.convert(rs, OwnedCustomerResponse.class)) .collect(Collectors.toList()); + ObjectMapper objectMapper = new ObjectMapper(); + try { + return objectMapper.writeValueAsString(responses); + } catch (IOException e) { + throw new RuntimeException(e); + } } public void assignWallet(WalletAssignRequest request) { diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/JdbcVoucherWalletRepository.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/JdbcVoucherWalletRepository.java index 6f129a9235..556ca03e59 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/JdbcVoucherWalletRepository.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/JdbcVoucherWalletRepository.java @@ -38,7 +38,7 @@ public void delete(WalletDeleteQuery query) { } public WalletInsertResultSet insert(WalletInsertQuery query) { - store.insert(query); + return store.insert(query); } @Override From 35f7d768c62af094c9b388b8bdf0f07c2c1f14a9 Mon Sep 17 00:00:00 2001 From: wonu606 Date: Thu, 20 Jul 2023 23:54:11 +0900 Subject: [PATCH 28/37] =?UTF-8?q?refactor:=20Voucher=20->=20VoucherWallet?= =?UTF-8?q?=EC=9D=84=20=EC=9D=98=EC=A1=B4=ED=95=98=EB=8A=94=20=EB=B0=A9?= =?UTF-8?q?=ED=96=A5=EC=9D=84=20VoucherWallet=20->=20Vouchcer=20=EC=9D=98?= =?UTF-8?q?=EC=A1=B4=ED=95=98=EB=8F=84=EB=A1=9D=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- voucher-manager/build.gradle | 3 +- .../voucher/VoucherControllerCable.java | 14 +- .../voucher/io/VoucherConsoleIo.java | 3 - .../VoucherWalletController.java} | 27 ++-- .../OwnedCustomerResponseConverter.java | 4 +- .../OwnedCustomersParamConverter.java | 4 +- .../VoucherCreateParamConverter.java | 5 +- .../VoucherCreateResponseConverter.java | 5 +- .../converter/VoucherResponseConverter.java | 5 +- ...cherWalletControllerConverterManager.java} | 6 +- .../converter/WalletAssignParamConverter.java | 4 +- .../reqeust/OwnedCustomersRequest.java | 2 +- .../reqeust/VoucherCreateRequest.java | 2 +- .../reqeust/WalletAssignRequest.java | 2 +- .../response/OwnedCustomerResponse.java | 2 +- .../response/VoucherCreateResponse.java | 2 +- .../response/VoucherResponse.java | 4 +- .../reader/VoucherWalletJdbcReader.java | 4 +- .../service/voucher/VoucherService.java | 15 +- .../converter/VoucherResultConverter.java | 2 +- .../voucherwallet/VoucherWalletService.java | 17 ++- .../voucher/VoucherControllerCableTest.java | 89 ------------ .../MappingCustomerRepositoryTest.java | 133 ------------------ voucher-manager/src/test/resources/schema.sql | 14 +- 24 files changed, 71 insertions(+), 297 deletions(-) rename voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/{voucher/VoucherController.java => voucherwallet/VoucherWalletController.java} (71%) rename voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/{voucher => voucherwallet}/converter/OwnedCustomerResponseConverter.java (80%) rename voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/{voucher => voucherwallet}/converter/OwnedCustomersParamConverter.java (81%) rename voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/{voucher => voucherwallet}/converter/VoucherCreateParamConverter.java (76%) rename voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/{voucher => voucherwallet}/converter/VoucherCreateResponseConverter.java (75%) rename voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/{voucher => voucherwallet}/converter/VoucherResponseConverter.java (74%) rename voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/{voucher/converter/VoucherControllerConverterManager.java => voucherwallet/converter/VoucherWalletControllerConverterManager.java} (85%) rename voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/{voucher => voucherwallet}/converter/WalletAssignParamConverter.java (81%) rename voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/{voucher => voucherwallet}/reqeust/OwnedCustomersRequest.java (77%) rename voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/{voucher => voucherwallet}/reqeust/VoucherCreateRequest.java (85%) rename voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/{voucher => voucherwallet}/reqeust/WalletAssignRequest.java (77%) rename voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/{voucher => voucherwallet}/response/OwnedCustomerResponse.java (75%) rename voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/{voucher => voucherwallet}/response/VoucherCreateResponse.java (76%) rename voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/{voucher => voucherwallet}/response/VoucherResponse.java (73%) delete mode 100644 voucher-manager/src/test/java/com/wonu606/vouchermanager/console/controllercable/voucher/VoucherControllerCableTest.java delete mode 100644 voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/customer/MappingCustomerRepositoryTest.java diff --git a/voucher-manager/build.gradle b/voucher-manager/build.gradle index e357d69c04..3b2ec146e5 100644 --- a/voucher-manager/build.gradle +++ b/voucher-manager/build.gradle @@ -29,8 +29,7 @@ dependencies { runtimeOnly 'com.mysql:mysql-connector-j' testImplementation 'com.h2database:h2' // https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind - implementation 'com.fasterxml.jackson.core:jackson-databind:2.0.1' - + implementation 'com.fasterxml.jackson.core:jackson-databind:2.15.1' } tasks.named('test') { diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/voucher/VoucherControllerCable.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/voucher/VoucherControllerCable.java index c1ba428f7b..27d216e77b 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/voucher/VoucherControllerCable.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/voucher/VoucherControllerCable.java @@ -1,22 +1,20 @@ package com.wonu606.vouchermanager.console.controllercable.voucher; import com.wonu606.vouchermanager.console.controllercable.voucher.io.VoucherConsoleIo; -import com.wonu606.vouchermanager.controller.voucher.VoucherController; -import com.wonu606.vouchermanager.controller.voucher.reqeust.VoucherCreateRequest; -import com.wonu606.vouchermanager.controller.voucher.reqeust.OwnedCustomersRequest; -import com.wonu606.vouchermanager.controller.voucher.reqeust.WalletAssignRequest; -import com.wonu606.vouchermanager.controller.voucher.response.OwnedCustomerResponse; -import com.wonu606.vouchermanager.controller.voucher.response.VoucherResponse; +import com.wonu606.vouchermanager.controller.voucherwallet.VoucherWalletController; +import com.wonu606.vouchermanager.controller.voucherwallet.reqeust.VoucherCreateRequest; +import com.wonu606.vouchermanager.controller.voucherwallet.reqeust.OwnedCustomersRequest; +import com.wonu606.vouchermanager.controller.voucherwallet.reqeust.WalletAssignRequest; import org.springframework.stereotype.Component; @Component public class VoucherControllerCable { private final VoucherConsoleIo consoleIo; - private final VoucherController controller; + private final VoucherWalletController controller; public VoucherControllerCable(VoucherConsoleIo consoleIo, - VoucherController controller) { + VoucherWalletController controller) { this.consoleIo = consoleIo; this.controller = controller; } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/voucher/io/VoucherConsoleIo.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/voucher/io/VoucherConsoleIo.java index 5d02bf1c38..185c366963 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/voucher/io/VoucherConsoleIo.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/controllercable/voucher/io/VoucherConsoleIo.java @@ -4,9 +4,6 @@ import com.wonu606.vouchermanager.console.ConsoleInput; import com.wonu606.vouchermanager.console.ConsolePrinter; import com.wonu606.vouchermanager.console.controllercable.voucher.VoucherControllerMenu; -import com.wonu606.vouchermanager.controller.voucher.response.OwnedCustomerResponse; -import com.wonu606.vouchermanager.controller.voucher.response.VoucherResponse; -import java.util.List; import org.springframework.stereotype.Component; @Component diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/VoucherController.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/VoucherWalletController.java similarity index 71% rename from voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/VoucherController.java rename to voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/VoucherWalletController.java index c09fd53dab..2786eaf591 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/VoucherController.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/VoucherWalletController.java @@ -1,17 +1,18 @@ -package com.wonu606.vouchermanager.controller.voucher; +package com.wonu606.vouchermanager.controller.voucherwallet; import com.fasterxml.jackson.databind.ObjectMapper; -import com.wonu606.vouchermanager.controller.voucher.converter.VoucherControllerConverterManager; -import com.wonu606.vouchermanager.controller.voucher.reqeust.OwnedCustomersRequest; -import com.wonu606.vouchermanager.controller.voucher.reqeust.VoucherCreateRequest; -import com.wonu606.vouchermanager.controller.voucher.reqeust.WalletAssignRequest; -import com.wonu606.vouchermanager.controller.voucher.response.OwnedCustomerResponse; -import com.wonu606.vouchermanager.controller.voucher.response.VoucherCreateResponse; -import com.wonu606.vouchermanager.controller.voucher.response.VoucherResponse; +import com.wonu606.vouchermanager.controller.voucherwallet.converter.VoucherWalletControllerConverterManager; +import com.wonu606.vouchermanager.controller.voucherwallet.reqeust.OwnedCustomersRequest; +import com.wonu606.vouchermanager.controller.voucherwallet.reqeust.VoucherCreateRequest; +import com.wonu606.vouchermanager.controller.voucherwallet.reqeust.WalletAssignRequest; +import com.wonu606.vouchermanager.controller.voucherwallet.response.OwnedCustomerResponse; +import com.wonu606.vouchermanager.controller.voucherwallet.response.VoucherCreateResponse; +import com.wonu606.vouchermanager.controller.voucherwallet.response.VoucherResponse; import com.wonu606.vouchermanager.service.voucher.VoucherService; import com.wonu606.vouchermanager.service.voucher.param.VoucherCreateParam; import com.wonu606.vouchermanager.service.voucher.result.VoucherCreateResult; import com.wonu606.vouchermanager.service.voucher.result.VoucherResult; +import com.wonu606.vouchermanager.service.voucherwallet.VoucherWalletService; import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedCustomersParam; import com.wonu606.vouchermanager.service.voucherwallet.param.WalletAssignParam; import com.wonu606.vouchermanager.service.voucherwallet.result.OwnedCustomerResult; @@ -21,14 +22,14 @@ import org.springframework.stereotype.Component; @Component -public class VoucherController { +public class VoucherWalletController { - private final VoucherService service; - private final VoucherControllerConverterManager converterManager; + private final VoucherWalletService service; + private final VoucherWalletControllerConverterManager converterManager; - public VoucherController(VoucherService service) { + public VoucherWalletController(VoucherWalletService service) { this.service = service; - converterManager = new VoucherControllerConverterManager(); + converterManager = new VoucherWalletControllerConverterManager(); } public String createVoucher(VoucherCreateRequest request) { diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/OwnedCustomerResponseConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/converter/OwnedCustomerResponseConverter.java similarity index 80% rename from voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/OwnedCustomerResponseConverter.java rename to voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/converter/OwnedCustomerResponseConverter.java index 865d600a76..5ed84a288a 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/OwnedCustomerResponseConverter.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/converter/OwnedCustomerResponseConverter.java @@ -1,6 +1,6 @@ -package com.wonu606.vouchermanager.controller.voucher.converter; +package com.wonu606.vouchermanager.controller.voucherwallet.converter; -import com.wonu606.vouchermanager.controller.voucher.response.OwnedCustomerResponse; +import com.wonu606.vouchermanager.controller.voucherwallet.response.OwnedCustomerResponse; import com.wonu606.vouchermanager.service.voucherwallet.result.OwnedCustomerResult; import com.wonu606.vouchermanager.util.TypedConverter; diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/OwnedCustomersParamConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/converter/OwnedCustomersParamConverter.java similarity index 81% rename from voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/OwnedCustomersParamConverter.java rename to voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/converter/OwnedCustomersParamConverter.java index 555b95891d..d7b1c2c3c2 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/OwnedCustomersParamConverter.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/converter/OwnedCustomersParamConverter.java @@ -1,6 +1,6 @@ -package com.wonu606.vouchermanager.controller.voucher.converter; +package com.wonu606.vouchermanager.controller.voucherwallet.converter; -import com.wonu606.vouchermanager.controller.voucher.reqeust.OwnedCustomersRequest; +import com.wonu606.vouchermanager.controller.voucherwallet.reqeust.OwnedCustomersRequest; import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedCustomersParam; import com.wonu606.vouchermanager.util.TypedConverter; import java.util.UUID; diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/VoucherCreateParamConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/converter/VoucherCreateParamConverter.java similarity index 76% rename from voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/VoucherCreateParamConverter.java rename to voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/converter/VoucherCreateParamConverter.java index f4e864acaf..8ba8971f3a 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/VoucherCreateParamConverter.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/converter/VoucherCreateParamConverter.java @@ -1,9 +1,8 @@ -package com.wonu606.vouchermanager.controller.voucher.converter; +package com.wonu606.vouchermanager.controller.voucherwallet.converter; -import com.wonu606.vouchermanager.controller.voucher.reqeust.VoucherCreateRequest; +import com.wonu606.vouchermanager.controller.voucherwallet.reqeust.VoucherCreateRequest; import com.wonu606.vouchermanager.service.voucher.param.VoucherCreateParam; import com.wonu606.vouchermanager.util.TypedConverter; -import org.springframework.core.convert.converter.Converter; public class VoucherCreateParamConverter implements TypedConverter { diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/VoucherCreateResponseConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/converter/VoucherCreateResponseConverter.java similarity index 75% rename from voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/VoucherCreateResponseConverter.java rename to voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/converter/VoucherCreateResponseConverter.java index 161f56f81e..11797e2c1d 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/VoucherCreateResponseConverter.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/converter/VoucherCreateResponseConverter.java @@ -1,9 +1,8 @@ -package com.wonu606.vouchermanager.controller.voucher.converter; +package com.wonu606.vouchermanager.controller.voucherwallet.converter; -import com.wonu606.vouchermanager.controller.voucher.response.VoucherCreateResponse; +import com.wonu606.vouchermanager.controller.voucherwallet.response.VoucherCreateResponse; import com.wonu606.vouchermanager.service.voucher.result.VoucherCreateResult; import com.wonu606.vouchermanager.util.TypedConverter; -import org.springframework.core.convert.converter.Converter; public class VoucherCreateResponseConverter implements TypedConverter { diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/VoucherResponseConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/converter/VoucherResponseConverter.java similarity index 74% rename from voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/VoucherResponseConverter.java rename to voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/converter/VoucherResponseConverter.java index 034203b24d..43fdea486a 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/VoucherResponseConverter.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/converter/VoucherResponseConverter.java @@ -1,9 +1,8 @@ -package com.wonu606.vouchermanager.controller.voucher.converter; +package com.wonu606.vouchermanager.controller.voucherwallet.converter; -import com.wonu606.vouchermanager.controller.voucher.response.VoucherResponse; +import com.wonu606.vouchermanager.controller.voucherwallet.response.VoucherResponse; import com.wonu606.vouchermanager.service.voucher.result.VoucherResult; import com.wonu606.vouchermanager.util.TypedConverter; -import org.springframework.core.convert.converter.Converter; public class VoucherResponseConverter implements TypedConverter { diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/VoucherControllerConverterManager.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/converter/VoucherWalletControllerConverterManager.java similarity index 85% rename from voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/VoucherControllerConverterManager.java rename to voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/converter/VoucherWalletControllerConverterManager.java index cdff1b6b26..77d1b03327 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/VoucherControllerConverterManager.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/converter/VoucherWalletControllerConverterManager.java @@ -1,14 +1,14 @@ -package com.wonu606.vouchermanager.controller.voucher.converter; +package com.wonu606.vouchermanager.controller.voucherwallet.converter; import com.wonu606.vouchermanager.util.TypedConverter; import java.util.ArrayList; import java.util.List; -public class VoucherControllerConverterManager { +public class VoucherWalletControllerConverterManager { private final List> converterList; - public VoucherControllerConverterManager() { + public VoucherWalletControllerConverterManager() { converterList = new ArrayList<>(); converterList.add(new VoucherCreateParamConverter()); converterList.add(new VoucherCreateResponseConverter()); diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/WalletAssignParamConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/converter/WalletAssignParamConverter.java similarity index 81% rename from voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/WalletAssignParamConverter.java rename to voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/converter/WalletAssignParamConverter.java index 3659417487..4361bc893a 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/converter/WalletAssignParamConverter.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/converter/WalletAssignParamConverter.java @@ -1,6 +1,6 @@ -package com.wonu606.vouchermanager.controller.voucher.converter; +package com.wonu606.vouchermanager.controller.voucherwallet.converter; -import com.wonu606.vouchermanager.controller.voucher.reqeust.WalletAssignRequest; +import com.wonu606.vouchermanager.controller.voucherwallet.reqeust.WalletAssignRequest; import com.wonu606.vouchermanager.service.voucherwallet.param.WalletAssignParam; import com.wonu606.vouchermanager.util.TypedConverter; import java.util.UUID; diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/reqeust/OwnedCustomersRequest.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/reqeust/OwnedCustomersRequest.java similarity index 77% rename from voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/reqeust/OwnedCustomersRequest.java rename to voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/reqeust/OwnedCustomersRequest.java index d8dd84594e..220d0c75b9 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/reqeust/OwnedCustomersRequest.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/reqeust/OwnedCustomersRequest.java @@ -1,4 +1,4 @@ -package com.wonu606.vouchermanager.controller.voucher.reqeust; +package com.wonu606.vouchermanager.controller.voucherwallet.reqeust; public class OwnedCustomersRequest { diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/reqeust/VoucherCreateRequest.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/reqeust/VoucherCreateRequest.java similarity index 85% rename from voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/reqeust/VoucherCreateRequest.java rename to voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/reqeust/VoucherCreateRequest.java index 7a92e839be..1720743dc2 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/reqeust/VoucherCreateRequest.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/reqeust/VoucherCreateRequest.java @@ -1,4 +1,4 @@ -package com.wonu606.vouchermanager.controller.voucher.reqeust; +package com.wonu606.vouchermanager.controller.voucherwallet.reqeust; public class VoucherCreateRequest { diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/reqeust/WalletAssignRequest.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/reqeust/WalletAssignRequest.java similarity index 77% rename from voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/reqeust/WalletAssignRequest.java rename to voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/reqeust/WalletAssignRequest.java index 69c4dcc67b..96d1985635 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/reqeust/WalletAssignRequest.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/reqeust/WalletAssignRequest.java @@ -1,4 +1,4 @@ -package com.wonu606.vouchermanager.controller.voucher.reqeust; +package com.wonu606.vouchermanager.controller.voucherwallet.reqeust; public class WalletAssignRequest { diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/response/OwnedCustomerResponse.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/response/OwnedCustomerResponse.java similarity index 75% rename from voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/response/OwnedCustomerResponse.java rename to voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/response/OwnedCustomerResponse.java index 8233e0cf97..0e31f31429 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/response/OwnedCustomerResponse.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/response/OwnedCustomerResponse.java @@ -1,4 +1,4 @@ -package com.wonu606.vouchermanager.controller.voucher.response; +package com.wonu606.vouchermanager.controller.voucherwallet.response; public class OwnedCustomerResponse { diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/response/VoucherCreateResponse.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/response/VoucherCreateResponse.java similarity index 76% rename from voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/response/VoucherCreateResponse.java rename to voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/response/VoucherCreateResponse.java index da32efb0bc..4546c0e929 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/response/VoucherCreateResponse.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/response/VoucherCreateResponse.java @@ -1,4 +1,4 @@ -package com.wonu606.vouchermanager.controller.voucher.response; +package com.wonu606.vouchermanager.controller.voucherwallet.response; public class VoucherCreateResponse { diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/response/VoucherResponse.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/response/VoucherResponse.java similarity index 73% rename from voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/response/VoucherResponse.java rename to voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/response/VoucherResponse.java index 9ef1243ef0..a3ae393340 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucher/response/VoucherResponse.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/response/VoucherResponse.java @@ -1,6 +1,4 @@ -package com.wonu606.vouchermanager.controller.voucher.response; - -import java.util.List; +package com.wonu606.vouchermanager.controller.voucherwallet.response; public class VoucherResponse { diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/reader/VoucherWalletJdbcReader.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/reader/VoucherWalletJdbcReader.java index 58fcb9afd0..afc97f1087 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/reader/VoucherWalletJdbcReader.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/reader/VoucherWalletJdbcReader.java @@ -35,11 +35,11 @@ public List findOwnedVouchersByCustomer(OwnedVouchersQuer @Override public List findOwnedCustomersByVoucher(OwnedCustomersQuery query) { - String selectionSql = "SELECT customer_id FROM voucher_wallet WHERE voucher_id = :voucher_id"; + String selectionSql = "SELECT customer_id FROM voucher_wallet WHERE voucher_id = :voucher_id AND customer_id IS NOT NULL"; Map params = new HashMap<>(); params.put("voucher_id", query.getVoucherId()); - return jdbcTemplate.query(selectionSql, + return jdbcTemplate.query(selectionSql, params, rowMapperManager.getRowMapperForType(OwnedCustomerResultSet.class)); } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/VoucherService.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/VoucherService.java index 66399095e9..fe0ec67d88 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/VoucherService.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/VoucherService.java @@ -10,7 +10,6 @@ import com.wonu606.vouchermanager.service.voucher.param.VoucherCreateParam; import com.wonu606.vouchermanager.service.voucher.result.VoucherCreateResult; import com.wonu606.vouchermanager.service.voucher.result.VoucherResult; -import com.wonu606.vouchermanager.service.voucherwallet.VoucherWalletService; import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedCustomersParam; import com.wonu606.vouchermanager.service.voucherwallet.param.WalletAssignParam; import com.wonu606.vouchermanager.service.voucherwallet.result.OwnedCustomerResult; @@ -30,14 +29,12 @@ public class VoucherService { private static final Logger log = LoggerFactory.getLogger(VoucherService.class); private static final int MAX_RETRIES = 3; - private final VoucherWalletService voucherWalletService; private final VoucherRepository repository; private final VoucherFactory factory; private final VoucherServiceConverterManager converterManager; - public VoucherService(VoucherWalletService voucherWalletService, VoucherRepository repository, - VoucherFactory factory, VoucherServiceConverterManager converterManager) { - this.voucherWalletService = voucherWalletService; + public VoucherService(VoucherRepository repository, VoucherFactory factory, + VoucherServiceConverterManager converterManager) { this.repository = repository; this.factory = factory; this.converterManager = converterManager; @@ -54,14 +51,6 @@ public List getVoucherList() { .collect(Collectors.toList()); } - public List findOwnedCustomersByVoucher(OwnedCustomersParam param) { - return voucherWalletService.findOwnedCustomersByVoucher(param); - } - - public WalletAssignResult assignWallet(WalletAssignParam param) { - return voucherWalletService.assignWallet(param); - } - private VoucherCreateResult createVoucher(VoucherCreateParam voucherCreateParam, int retryCount) { if (retryCount > MAX_RETRIES) { diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/converter/VoucherResultConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/converter/VoucherResultConverter.java index ee047462d5..a491464cdf 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/converter/VoucherResultConverter.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/converter/VoucherResultConverter.java @@ -8,7 +8,7 @@ public class VoucherResultConverter implements TypedConverter findOwnedCustomersByVoucher(OwnedCustomersParam .map(rs -> converterManager.convert(rs, OwnedCustomerResult.class)) .collect(Collectors.toList()); } + + public VoucherCreateResult createVoucher(VoucherCreateParam param) { + return voucherService.createVoucher(param); + } + + public List getVoucherList() { + return voucherService.getVoucherList(); + } } diff --git a/voucher-manager/src/test/java/com/wonu606/vouchermanager/console/controllercable/voucher/VoucherControllerCableTest.java b/voucher-manager/src/test/java/com/wonu606/vouchermanager/console/controllercable/voucher/VoucherControllerCableTest.java deleted file mode 100644 index f310b3a319..0000000000 --- a/voucher-manager/src/test/java/com/wonu606/vouchermanager/console/controllercable/voucher/VoucherControllerCableTest.java +++ /dev/null @@ -1,89 +0,0 @@ -package com.wonu606.vouchermanager.console.controllercable.voucher; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.BDDMockito.given; -import static org.mockito.BDDMockito.then; -import static org.mockito.Mockito.mock; - -import com.wonu606.vouchermanager.console.controllercable.voucher.io.VoucherConsoleIo; -import com.wonu606.vouchermanager.controller.voucher.VoucherController; -import com.wonu606.vouchermanager.domain.voucher.Voucher; -import com.wonu606.vouchermanager.service.voucher.param.VoucherCreateParam; -import java.util.Arrays; -import java.util.List; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Test; -import org.mockito.ArgumentCaptor; - -@DisplayName("VoucherConsoleInterface 테스트") -public class VoucherControllerCableTest { - - private VoucherControllerCable consoleInterface; - - private VoucherController controllerMock; - - private VoucherConsoleIo voucherConsoleIoMock; - - - @BeforeEach - public void setUp() { - controllerMock = mock(VoucherController.class); - voucherConsoleIoMock = mock(VoucherConsoleIo.class); - consoleInterface = new VoucherControllerCable(voucherConsoleIoMock, controllerMock); - } - - @DisplayName("exit가 입력으로 주어지고_run을 하면_프로그램이 종료된다.") - @Test - public void GivenExitMenuSelected_WhenRun_ThenTerminatesProgram() { - // Given - given(voucherConsoleIoMock.selectMenu()).willReturn(VoucherControllerMenu.EXIT); - - // When - consoleInterface.run(); - - // then - then(voucherConsoleIoMock).should().selectMenu(); - then(voucherConsoleIoMock).shouldHaveNoMoreInteractions(); - } - - @DisplayName("list가 입력으로 주어지고_run을 하면_Voucher들을 출력한다.") - @Test - public void GivenListMenuSelected_WhenRun_ThenDisplayVoucherList() { - // Given - List voucherList = Arrays.asList(mock(Voucher.class), mock(Voucher.class)); - given(voucherConsoleIoMock.selectMenu()).willReturn(VoucherControllerMenu.LIST, VoucherControllerMenu.EXIT); - given(controllerMock.getVoucherList()).willReturn(voucherList); - - // When - consoleInterface.run(); - - // Then - then(voucherConsoleIoMock).should().displayVoucherList(voucherList); - } - - @DisplayName("create가 입력으로 주어지고_run을 하면_Voucher를 생성하여 저장한다.") - @Test - public void GivenCreateMenuSelected_WhenRun_ThenCreateVoucher() { - // Given - VoucherCreateParam expectedDto = new VoucherCreateParam("FIXED", 10.0); - - given(voucherConsoleIoMock.selectMenu()).willReturn(VoucherControllerMenu.CREATE, VoucherControllerMenu.EXIT); - given(voucherConsoleIoMock.selectVoucherType()).willReturn("FIXED"); - given(voucherConsoleIoMock.readDouble("discount")).willReturn(10.0); - - given(controllerMock.createVoucher(expectedDto)).willReturn(mock(Voucher.class)); - - // When - consoleInterface.run(); - - // Then - ArgumentCaptor argument = ArgumentCaptor.forClass(VoucherCreateParam.class); - then(controllerMock).should().createVoucher(argument.capture()); -// then(controllerMock).should().createVoucher(expectedDto); // error - - VoucherCreateParam actualDto = argument.getValue(); - assertThat(actualDto.getType()).isEqualTo(expectedDto.getType()); - assertThat(actualDto.getDiscountValue()).isEqualTo(expectedDto.getDiscountValue()); - } -} diff --git a/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/customer/MappingCustomerRepositoryTest.java b/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/customer/MappingCustomerRepositoryTest.java deleted file mode 100644 index 0c4230f338..0000000000 --- a/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/customer/MappingCustomerRepositoryTest.java +++ /dev/null @@ -1,133 +0,0 @@ -package com.wonu606.vouchermanager.repository.customer; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.BDDMockito.given; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; - -import com.wonu606.vouchermanager.domain.customer.Customer; -import com.wonu606.vouchermanager.repository.customer.resultset.CustomerResultSet; -import com.wonu606.vouchermanager.domain.customer.email.Email; -import java.util.ArrayList; -import java.util.List; -import java.util.Optional; -import java.util.stream.Stream; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.Arguments; -import org.junit.jupiter.params.provider.MethodSource; - -@DisplayName("MappingCustomerRepository 테스트") -class MappingCustomerRepositoryTest { - - private CustomerResultSetRepository customerResultSetRepository; - private MappingCustomerRepository customerRepository; - - static Stream givenCustomers() { - Customer customer1 = new Customer( - new Email("Linlin@onepiece.org"), "Big Mom"); - Customer customer2 = new Customer( - new Email("loopy@onepiece.org"), "Pirate King"); - - return Stream.of(Arguments.of(customer1, customer2)); - } - - @BeforeEach - void setUp() { - customerResultSetRepository = mock(CustomerResultSetRepository.class); - customerRepository = new MappingCustomerRepository(customerResultSetRepository); - } - - @Test - @DisplayName("save_Customer_Customer를 저장하고 반환한다.") - void save_VoucherProvided_ReturnVoucher() { - // given - Customer customer = mock(Customer.class); - - // then - customerRepository.insert(customer); - - // when - verify(customerResultSetRepository, times(1)).save(customer); - } - - @Test - @DisplayName("findByEmailAddress_존재하는 이메일 주소라면_Customer로 변환하여 반환한다.") - void findByEmailAddress_ExistingEmailAddress_ReturnsExpectedCustomer() { - // given - Customer customer = new Customer( - new Email("Linlin@onepiece.org"), "Big Mom"); - CustomerResultSet enteredResultSet = new CustomerResultSet( - customer.getEmailAddress(), - customer.getNickname(), - null, - null - ); - - Email email = new Email(customer.getEmailAddress()); - - given(customerResultSetRepository.findByEmailAddress(email)) - .willReturn(Optional.of(enteredResultSet)); - - // when - Optional actualCustomer = customerRepository.findByEmailAddress(email); - - // then - assertThat(actualCustomer.isPresent()).isTrue(); - assertThat(actualCustomer.get()).isEqualTo(customer); - } - - @ParameterizedTest - @MethodSource("givenCustomers") - @DisplayName("findAll_빈 인수_저장된 모든 Customer를 반환한다.") - void findAll_EmptyArgument_SavedAllCustomer(Customer customer1, Customer customer2) { - // given - List expectedCustomerList = new ArrayList<>(); - expectedCustomerList.add(customer1); - expectedCustomerList.add(customer2); - - CustomerResultSet expectedResultSet1 = new CustomerResultSet( - customer1.getEmailAddress(), customer1.getNickname(), null, null); - CustomerResultSet expectedResultSet2 = new CustomerResultSet( - customer2.getEmailAddress(), customer2.getNickname(), null, null); - - List expectedVoucherResultSetList = new ArrayList<>(); - expectedVoucherResultSetList.add(expectedResultSet1); - expectedVoucherResultSetList.add(expectedResultSet2); - - given(customerResultSetRepository.findAll()).willReturn(expectedVoucherResultSetList); - - // then - List actualCustomerList = customerRepository.findAll(); - - // when - assertThat(actualCustomerList).hasSameSizeAs(expectedCustomerList); - assertThat(actualCustomerList).containsExactlyInAnyOrderElementsOf(expectedCustomerList); - } - - @Test - @DisplayName("deleteByEmailAddress_이메일 주소_같은 이메일 주소를 반환한다.") - void deleteByEmailAddress_EmailAddress_ReturnsSameEmailAddress() { - // given - Email expectedEmail = new Email("Linlin@onepiece.org"); - - // when - customerRepository.deleteByCustomerId(expectedEmail); - - // then - verify(customerResultSetRepository, times(1)).deleteByEmailAddress(expectedEmail); - } - - @Test - @DisplayName("deleteAll_빈 인자_ResultSetRepository의 deleeteAll을 실행한다.") - void deleteAll_EmptyArgument_ExecuteVoucherResultSetRepositoryDeleteAllMethod() { - // when - customerRepository.deleteAll(); - - // then - verify(customerResultSetRepository, times(1)).deleteAll(); - } -} diff --git a/voucher-manager/src/test/resources/schema.sql b/voucher-manager/src/test/resources/schema.sql index 60cfc01ae1..ad09e9600d 100644 --- a/voucher-manager/src/test/resources/schema.sql +++ b/voucher-manager/src/test/resources/schema.sql @@ -1,3 +1,7 @@ +DROP TABLE if exists voucher_wallet; +DROP TABLE if exists voucher; +DROP TABLE if exists customer; + CREATE TABLE voucher ( voucher_id VARCHAR(36) PRIMARY KEY, @@ -13,12 +17,10 @@ CREATE TABLE customer created_date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ); -CREATE TABLE customer_voucher_wallet +CREATE TABLE voucher_wallet ( - customer_id VARCHAR(100) NOT NULL, - voucher_id VARCHAR(36) NOT NULL, + voucher_id VARCHAR(36) NOT NULL, + customer_id VARCHAR(100), - FOREIGN KEY (customer_id) REFERENCES customer (email) ON DELETE CASCADE, - FOREIGN KEY (voucher_id) REFERENCES voucher (voucher_id) ON DELETE CASCADE, - PRIMARY KEY (customer_id, voucher_id) + FOREIGN KEY (voucher_id) REFERENCES voucher (voucher_id) ON DELETE CASCADE ); From f237521687197d0358f7d4fcf1233078adacb250 Mon Sep 17 00:00:00 2001 From: wonu606 Date: Mon, 24 Jul 2023 01:19:23 +0900 Subject: [PATCH 29/37] =?UTF-8?q?feat:=20Customer=EB=A5=BC=20Wallet?= =?UTF-8?q?=EC=97=90=20=EB=93=B1=EB=A1=9D=ED=95=98=EB=8A=94=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../customer/CustomerController.java | 7 + .../CustomerControllerConverterManager.java | 1 + .../WalletRegisterParamConverter.java | 27 ++++ .../request/WalletRegisterRequest.java | 20 +++ ....java => VoucherWalletJdbcRepository.java} | 11 +- .../VoucherWalletRepository.java | 3 + .../query/WalletRegisterQuery.java | 20 +++ .../query/WalletUpdateQuery.java | 4 +- .../store/VoucherWalletJdbcStore.java | 11 ++ .../store/VoucherWalletStore.java | 3 + .../service/customer/CustomerService.java | 5 + .../customer/param/WalletRegisterParam.java | 22 +++ .../service/voucher/VoucherService.java | 4 - .../voucher/factory/VoucherFactory.java | 2 +- .../factory}/util/UUIDGenerator.java | 2 +- .../voucherwallet/VoucherWalletService.java | 7 + .../VoucherWalletServiceConverterManager.java | 2 + .../WalletRegisterQueryConverter.java | 25 +++ .../customer/CustomerJdbcRepositoryTest.java | 111 +++++--------- ...rResultSetVoucherRepositoryTestCreate.java | 138 ----------------- .../voucher/VoucherJdbcRepositoryTest.java | 144 ++++++++++++++++++ .../WrappingVoucherRepositoryTest.java | 138 ----------------- .../JdbcVoucherWalletRepositoryTest.java | 130 ---------------- .../VoucherWalletJdbcRepositoryTest.java | 140 +++++++++++++++++ .../service/voucher/VoucherFactoryTest.java | 2 +- .../service/voucher/VoucherServiceTest.java | 136 ++++++++--------- 26 files changed, 555 insertions(+), 560 deletions(-) create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/WalletRegisterParamConverter.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/request/WalletRegisterRequest.java rename voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/{JdbcVoucherWalletRepository.java => VoucherWalletJdbcRepository.java} (86%) create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/query/WalletRegisterQuery.java create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/param/WalletRegisterParam.java rename voucher-manager/src/main/java/com/wonu606/vouchermanager/service/{ => voucher/factory}/util/UUIDGenerator.java (74%) create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/WalletRegisterQueryConverter.java delete mode 100644 voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucher/JdbcVoucherResultSetVoucherRepositoryTestCreate.java create mode 100644 voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucher/VoucherJdbcRepositoryTest.java delete mode 100644 voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucher/WrappingVoucherRepositoryTest.java delete mode 100644 voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucherwallet/JdbcVoucherWalletRepositoryTest.java create mode 100644 voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucherwallet/VoucherWalletJdbcRepositoryTest.java diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/CustomerController.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/CustomerController.java index 6859e51ffd..6c4128efd5 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/CustomerController.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/CustomerController.java @@ -5,11 +5,13 @@ import com.wonu606.vouchermanager.controller.customer.request.CustomerCreateRequest; import com.wonu606.vouchermanager.controller.customer.request.OwnedVouchersRequest; import com.wonu606.vouchermanager.controller.customer.request.WalletDeleteRequest; +import com.wonu606.vouchermanager.controller.customer.request.WalletRegisterRequest; import com.wonu606.vouchermanager.controller.customer.response.CustomerCreateResponse; import com.wonu606.vouchermanager.controller.customer.response.CustomerResponse; import com.wonu606.vouchermanager.controller.customer.response.OwnedVoucherResponse; import com.wonu606.vouchermanager.service.customer.CustomerService; import com.wonu606.vouchermanager.service.customer.param.CustomerCreateParam; +import com.wonu606.vouchermanager.service.customer.param.WalletRegisterParam; import com.wonu606.vouchermanager.service.customer.result.CustomerCreateResult; import com.wonu606.vouchermanager.service.customer.result.CustomerResult; import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedVouchersParam; @@ -78,4 +80,9 @@ public void deleteWallet(WalletDeleteRequest request) { WalletDeleteParam param = converterManager.convert(request, WalletDeleteParam.class); service.deleteWallet(param); } + + public void registerToWallet(WalletRegisterRequest request) { + WalletRegisterParam param = converterManager.convert(request, WalletRegisterParam.class); + service.registerToWallet(param); + } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/CustomerControllerConverterManager.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/CustomerControllerConverterManager.java index 1a06cac06c..130c6b815f 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/CustomerControllerConverterManager.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/CustomerControllerConverterManager.java @@ -16,6 +16,7 @@ public CustomerControllerConverterManager() { converterList.add(new OwnedVouchersParamConverter()); converterList.add(new OwnedVoucherResponseConverter()); converterList.add(new WalletDeleteParamConverter()); + converterList.add(new WalletRegisterParamConverter()); } @SuppressWarnings("unchecked") diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/WalletRegisterParamConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/WalletRegisterParamConverter.java new file mode 100644 index 0000000000..e60afa2f68 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/WalletRegisterParamConverter.java @@ -0,0 +1,27 @@ +package com.wonu606.vouchermanager.controller.customer.converter; + +import com.wonu606.vouchermanager.controller.customer.request.WalletRegisterRequest; +import com.wonu606.vouchermanager.service.customer.param.WalletRegisterParam; +import com.wonu606.vouchermanager.util.TypedConverter; +import java.util.UUID; + +public class WalletRegisterParamConverter implements + TypedConverter { + + @Override + public Class getSourceType() { + return WalletRegisterRequest.class; + } + + @Override + public Class getTargetType() { + return WalletRegisterParam.class; + } + + @Override + public WalletRegisterParam convert(WalletRegisterRequest request) { + return new WalletRegisterParam( + UUID.fromString(request.getVoucherId()), + request.getCustomerId()); + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/request/WalletRegisterRequest.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/request/WalletRegisterRequest.java new file mode 100644 index 0000000000..ef7090509f --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/request/WalletRegisterRequest.java @@ -0,0 +1,20 @@ +package com.wonu606.vouchermanager.controller.customer.request; + +public class WalletRegisterRequest { + + private final String voucherId; + private final String customerId; + + public WalletRegisterRequest(String voucherId, String customerId) { + this.voucherId = voucherId; + this.customerId = customerId; + } + + public String getVoucherId() { + return voucherId; + } + + public String getCustomerId() { + return customerId; + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/JdbcVoucherWalletRepository.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/VoucherWalletJdbcRepository.java similarity index 86% rename from voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/JdbcVoucherWalletRepository.java rename to voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/VoucherWalletJdbcRepository.java index 556ca03e59..3b01eb1fc1 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/JdbcVoucherWalletRepository.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/VoucherWalletJdbcRepository.java @@ -4,6 +4,7 @@ import com.wonu606.vouchermanager.repository.voucherwallet.query.OwnedVouchersQuery; import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletDeleteQuery; import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletInsertQuery; +import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletRegisterQuery; import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletUpdateQuery; import com.wonu606.vouchermanager.repository.voucherwallet.reader.VoucherWalletReader; import com.wonu606.vouchermanager.repository.voucherwallet.resultset.OwnedCustomerResultSet; @@ -17,12 +18,12 @@ @Component @Transactional -public class JdbcVoucherWalletRepository implements VoucherWalletRepository { +public class VoucherWalletJdbcRepository implements VoucherWalletRepository { private final VoucherWalletReader reader; private final VoucherWalletStore store; - public JdbcVoucherWalletRepository(VoucherWalletReader reader, VoucherWalletStore store) { + public VoucherWalletJdbcRepository(VoucherWalletReader reader, VoucherWalletStore store) { this.reader = reader; this.store = store; } @@ -46,7 +47,13 @@ public List findOwnedCustomersByVoucher(OwnedCustomersQu return reader.findOwnedCustomersByVoucher(query); } + @Override public WalletUpdateResultSet update(WalletUpdateQuery query) { return store.update(query); } + + @Override + public void register(WalletRegisterQuery query) { + store.register(query); + } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/VoucherWalletRepository.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/VoucherWalletRepository.java index b00d9cd484..3193dad151 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/VoucherWalletRepository.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/VoucherWalletRepository.java @@ -4,6 +4,7 @@ import com.wonu606.vouchermanager.repository.voucherwallet.query.OwnedVouchersQuery; import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletDeleteQuery; import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletInsertQuery; +import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletRegisterQuery; import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletUpdateQuery; import com.wonu606.vouchermanager.repository.voucherwallet.resultset.OwnedCustomerResultSet; import com.wonu606.vouchermanager.repository.voucherwallet.resultset.OwnedVoucherResultSet; @@ -22,4 +23,6 @@ public interface VoucherWalletRepository { WalletInsertResultSet insert(WalletInsertQuery wallet); WalletUpdateResultSet update(WalletUpdateQuery wallet); + + void register(WalletRegisterQuery query); } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/query/WalletRegisterQuery.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/query/WalletRegisterQuery.java new file mode 100644 index 0000000000..32a6435345 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/query/WalletRegisterQuery.java @@ -0,0 +1,20 @@ +package com.wonu606.vouchermanager.repository.voucherwallet.query; + +public class WalletRegisterQuery { + + private final String customerId; + private final String voucherId; + + public WalletRegisterQuery(String customerId, String voucherId) { + this.customerId = customerId; + this.voucherId = voucherId; + } + + public String getCustomerId() { + return customerId; + } + + public String getVoucherId() { + return voucherId; + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/query/WalletUpdateQuery.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/query/WalletUpdateQuery.java index 21bc35db38..b1a36b7f8c 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/query/WalletUpdateQuery.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/query/WalletUpdateQuery.java @@ -2,8 +2,8 @@ public class WalletUpdateQuery { - private String customerId; - private String voucherId; + private final String customerId; + private final String voucherId; public WalletUpdateQuery(String customerId, String voucherId) { this.customerId = customerId; diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/store/VoucherWalletJdbcStore.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/store/VoucherWalletJdbcStore.java index 046dfe4273..47c47a0c0a 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/store/VoucherWalletJdbcStore.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/store/VoucherWalletJdbcStore.java @@ -2,6 +2,7 @@ import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletDeleteQuery; import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletInsertQuery; +import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletRegisterQuery; import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletUpdateQuery; import com.wonu606.vouchermanager.repository.voucherwallet.resultset.WalletInsertResultSet; import com.wonu606.vouchermanager.repository.voucherwallet.resultset.WalletUpdateResultSet; @@ -46,4 +47,14 @@ public WalletUpdateResultSet update(WalletUpdateQuery query) { return new WalletUpdateResultSet(jdbcTemplate.update(insertSql, params)); } + + @Override + public void register(WalletRegisterQuery query) { + String updateQuery = "UPDATE voucher_wallet SET customer_id = :customer_id WHERE voucher_id = :voucher_id AND customer_id IS NULL LIMIT 1"; + Map params = new HashMap<>(); + params.put("customer_id", query.getCustomerId()); + params.put("voucher_id", query.getVoucherId()); + + jdbcTemplate.update(updateQuery, params); + } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/store/VoucherWalletStore.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/store/VoucherWalletStore.java index ffcedc947f..aa2988150a 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/store/VoucherWalletStore.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/store/VoucherWalletStore.java @@ -2,6 +2,7 @@ import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletDeleteQuery; import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletInsertQuery; +import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletRegisterQuery; import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletUpdateQuery; import com.wonu606.vouchermanager.repository.voucherwallet.resultset.WalletInsertResultSet; import com.wonu606.vouchermanager.repository.voucherwallet.resultset.WalletUpdateResultSet; @@ -13,4 +14,6 @@ public interface VoucherWalletStore { WalletInsertResultSet insert(WalletInsertQuery wallet); WalletUpdateResultSet update(WalletUpdateQuery wallet); + + void register(WalletRegisterQuery query); } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/CustomerService.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/CustomerService.java index 6158015409..a1f83b515e 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/CustomerService.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/CustomerService.java @@ -8,6 +8,7 @@ import com.wonu606.vouchermanager.service.customer.converter.CustomerServiceConverterManager; import com.wonu606.vouchermanager.service.customer.factory.CustomerFactory; import com.wonu606.vouchermanager.service.customer.param.CustomerCreateParam; +import com.wonu606.vouchermanager.service.customer.param.WalletRegisterParam; import com.wonu606.vouchermanager.service.customer.result.CustomerCreateResult; import com.wonu606.vouchermanager.service.customer.result.CustomerResult; import com.wonu606.vouchermanager.service.voucherwallet.VoucherWalletService; @@ -60,4 +61,8 @@ public List findOwnedVouchersByCustomer(OwnedVouchersParam p public void deleteWallet(WalletDeleteParam param) { voucherWalletService.deleteWallet(param); } + + public void registerToWallet(WalletRegisterParam param) { + voucherWalletService.registerToWallet(param); + } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/param/WalletRegisterParam.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/param/WalletRegisterParam.java new file mode 100644 index 0000000000..baacef95c3 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/customer/param/WalletRegisterParam.java @@ -0,0 +1,22 @@ +package com.wonu606.vouchermanager.service.customer.param; + +import java.util.UUID; + +public class WalletRegisterParam { + + private final UUID voucherId; + private final String customerId; + + public WalletRegisterParam(UUID voucherId, String customerId) { + this.voucherId = voucherId; + this.customerId = customerId; + } + + public UUID getVoucherId() { + return voucherId; + } + + public String getCustomerId() { + return customerId; + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/VoucherService.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/VoucherService.java index fe0ec67d88..66104a501c 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/VoucherService.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/VoucherService.java @@ -10,10 +10,6 @@ import com.wonu606.vouchermanager.service.voucher.param.VoucherCreateParam; import com.wonu606.vouchermanager.service.voucher.result.VoucherCreateResult; import com.wonu606.vouchermanager.service.voucher.result.VoucherResult; -import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedCustomersParam; -import com.wonu606.vouchermanager.service.voucherwallet.param.WalletAssignParam; -import com.wonu606.vouchermanager.service.voucherwallet.result.OwnedCustomerResult; -import com.wonu606.vouchermanager.service.voucherwallet.result.WalletAssignResult; import java.util.List; import java.util.stream.Collectors; import org.slf4j.Logger; diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/factory/VoucherFactory.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/factory/VoucherFactory.java index d2fb73be1b..75c453d6da 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/factory/VoucherFactory.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/factory/VoucherFactory.java @@ -5,7 +5,7 @@ import com.wonu606.vouchermanager.domain.voucher.Voucher; import com.wonu606.vouchermanager.domain.voucher.discountvalue.FixedAmountValue; import com.wonu606.vouchermanager.domain.voucher.discountvalue.PercentageDiscountValue; -import com.wonu606.vouchermanager.service.util.UUIDGenerator; +import com.wonu606.vouchermanager.service.voucher.factory.util.UUIDGenerator; import com.wonu606.vouchermanager.service.voucher.param.VoucherCreateParam; import org.springframework.stereotype.Component; diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/util/UUIDGenerator.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/factory/util/UUIDGenerator.java similarity index 74% rename from voucher-manager/src/main/java/com/wonu606/vouchermanager/service/util/UUIDGenerator.java rename to voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/factory/util/UUIDGenerator.java index a1f8944f8f..027d14ae27 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/util/UUIDGenerator.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/factory/util/UUIDGenerator.java @@ -1,4 +1,4 @@ -package com.wonu606.vouchermanager.service.util; +package com.wonu606.vouchermanager.service.voucher.factory.util; import java.util.UUID; import org.springframework.stereotype.Component; diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/VoucherWalletService.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/VoucherWalletService.java index 7ab0aaf53a..8c4a274f8c 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/VoucherWalletService.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/VoucherWalletService.java @@ -1,6 +1,8 @@ package com.wonu606.vouchermanager.service.voucherwallet; import com.wonu606.vouchermanager.repository.voucher.resultset.VoucherResultSet; +import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletRegisterQuery; +import com.wonu606.vouchermanager.service.customer.param.WalletRegisterParam; import com.wonu606.vouchermanager.service.voucher.VoucherService; import com.wonu606.vouchermanager.service.voucher.param.VoucherCreateParam; import com.wonu606.vouchermanager.service.voucher.result.VoucherCreateResult; @@ -80,4 +82,9 @@ public VoucherCreateResult createVoucher(VoucherCreateParam param) { public List getVoucherList() { return voucherService.getVoucherList(); } + + public void registerToWallet(WalletRegisterParam param) { + WalletRegisterQuery query = converterManager.convert(param, WalletRegisterQuery.class); + voucherWalletRepository.register(query); + } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/VoucherWalletServiceConverterManager.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/VoucherWalletServiceConverterManager.java index 2d89726849..1c8522ba38 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/VoucherWalletServiceConverterManager.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/VoucherWalletServiceConverterManager.java @@ -1,5 +1,6 @@ package com.wonu606.vouchermanager.service.voucherwallet.converter; +import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletRegisterQuery; import com.wonu606.vouchermanager.util.TypedConverter; import java.util.ArrayList; import java.util.List; @@ -19,6 +20,7 @@ public VoucherWalletServiceConverterManager() { converterList.add(new WalletInsertResultConverter()); converterList.add(new OwnedCustomersQueryConverter()); converterList.add(new OwnedCustomersResultConverter()); + converterList.add(new WalletRegisterQueryConverter()); } @SuppressWarnings("unchecked") diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/WalletRegisterQueryConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/WalletRegisterQueryConverter.java new file mode 100644 index 0000000000..8585256edc --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/WalletRegisterQueryConverter.java @@ -0,0 +1,25 @@ +package com.wonu606.vouchermanager.service.voucherwallet.converter; + +import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletRegisterQuery; +import com.wonu606.vouchermanager.service.customer.param.WalletRegisterParam; +import com.wonu606.vouchermanager.util.TypedConverter; + +public class WalletRegisterQueryConverter implements TypedConverter { + + @Override + public Class getSourceType() { + return WalletRegisterParam.class; + } + + @Override + public Class getTargetType() { + return WalletRegisterQuery.class; + } + + @Override + public WalletRegisterQuery convert(WalletRegisterParam param) { + return new WalletRegisterQuery( + param.getCustomerId(), + param.getVoucherId().toString()); + } +} diff --git a/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/customer/CustomerJdbcRepositoryTest.java b/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/customer/CustomerJdbcRepositoryTest.java index 126e590644..063a1cfe4b 100644 --- a/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/customer/CustomerJdbcRepositoryTest.java +++ b/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/customer/CustomerJdbcRepositoryTest.java @@ -3,29 +3,37 @@ import static org.assertj.core.api.Assertions.assertThat; import com.wonu606.vouchermanager.domain.customer.Customer; -import com.wonu606.vouchermanager.repository.customer.resultset.CustomerResultSet; import com.wonu606.vouchermanager.domain.customer.email.Email; +import com.wonu606.vouchermanager.repository.customer.query.CustomerCreateQuery; +import com.wonu606.vouchermanager.repository.customer.reader.CustomerJdbcReader; +import com.wonu606.vouchermanager.repository.customer.reader.CustomerReader; +import com.wonu606.vouchermanager.repository.customer.reader.rowmapper.CustomerReaderRowMapperManager; +import com.wonu606.vouchermanager.repository.customer.resultset.CustomerResultSet; +import com.wonu606.vouchermanager.repository.customer.store.CustomerJdbcStore; +import com.wonu606.vouchermanager.repository.customer.store.CustomerStore; import java.util.List; -import java.util.Optional; -import javax.sql.DataSource; import org.junit.jupiter.api.BeforeEach; 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.jdbc.JdbcTest; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; @JdbcTest @DisplayName("JdbcCustomerResultSetRepository 테스트") class CustomerJdbcRepositoryTest { - private CustomerJdbcRepository customerJdbcRepository; + private CustomerJdbcRepository repository; @Autowired - private DataSource dataSource; + private NamedParameterJdbcTemplate namedParameterJdbcTemplate; @BeforeEach void setUp() { - customerJdbcRepository = new CustomerJdbcRepository(dataSource); + CustomerReader reader = new CustomerJdbcReader(namedParameterJdbcTemplate, + new CustomerReaderRowMapperManager()); + CustomerStore store = new CustomerJdbcStore(namedParameterJdbcTemplate); + repository = new CustomerJdbcRepository(reader, store); } @Test @@ -38,47 +46,15 @@ void save_UnsavedCustomer_CustomerSaved() { Email email = new Email(customer.getEmailAddress()); // when - customerJdbcRepository.save(customer); - var foundCustomer = customerJdbcRepository.findByEmailAddress( - email); - - // then - assertThat(foundCustomer).isPresent(); - assertThat(foundCustomer.get().getEmailAddress()).isEqualTo(customer.getEmailAddress()); - assertThat(foundCustomer.get().getNickname()).isEqualTo(customer.getNickname()); - } - - @Test - @DisplayName("findByEmailAddress_저장된 Customer라면_Customer가 반환된다.") - void findByEmailAddress_CustomerPresent_ReturnsSameCustomer() { - // given - Customer customer = new Customer( - new Email("Linlin@onepiece.org"), "Big Mom"); - customerJdbcRepository.save(customer); - - Email email = new Email(customer.getEmailAddress()); - - // when - var foundCustomer = - customerJdbcRepository.findByEmailAddress(email); - - // then - assertThat(foundCustomer).isPresent(); - assertThat(foundCustomer.get().getEmailAddress()).isEqualTo(customer.getEmailAddress()); - } - - @Test - @DisplayName("findByEmailAddress_저장되지 않은 Customer_Empty를 반환한다.") - void findByEmailAddress_UnsavedCustomer_ReturnsEmpty() { - // given - Email unsavedEmail = new Email("unsavedEmailAddress@domain.com"); - - // when - var foundCustomer = - customerJdbcRepository.findByEmailAddress(unsavedEmail); + repository.insert( + new CustomerCreateQuery(customer.getEmailAddress(), customer.getNickname())); + List actualAllList = repository.findAll(); // then - assertThat(foundCustomer).isNotPresent(); + assertThat(actualAllList).isNotNull(); + assertThat(actualAllList).hasSize(1); + assertThat(actualAllList.get(0).getEmail()).isEqualTo(customer.getEmailAddress()); + assertThat(actualAllList.get(0).getNickname()).isEqualTo(customer.getNickname()); } @Test @@ -89,53 +65,38 @@ void findAll_SavedCustomers_ReturnsAllCustomers() { new Email("Linlin@onepiece.org"), "Big Mom"); Customer customer2 = new Customer( new Email("loopy@onepiece.org"), "Pirate King"); - customerJdbcRepository.save(customer1); - customerJdbcRepository.save(customer2); + repository.insert( + new CustomerCreateQuery(customer1.getEmailAddress(), customer1.getNickname())); + repository.insert( + new CustomerCreateQuery(customer2.getEmailAddress(), customer2.getNickname())); // when - List allCustomers = customerJdbcRepository.findAll(); + List allCustomers = repository.findAll(); // then assertThat(allCustomers).hasSize(2); - assertThat(allCustomers).extracting("emailAddress") + assertThat(allCustomers).extracting("email") .contains(customer1.getEmailAddress(), customer2.getEmailAddress()); + assertThat(allCustomers).extracting("nickname") + .contains(customer1.getNickname(), customer2.getNickname()); } @Test - @DisplayName("deleteByEmailAddress_저장된 Customer_Customer를 제거한다.") - void deleteByEmailAddress_SavedCustomer_CustomerDeleted() { + @DisplayName("deleteByCustomerId_저장된 Customer_Customer를 제거한다.") + void deleteByCustomerId_SavedCustomer_CustomerDeleted() { // given Customer customer = new Customer( new Email("Linlin@onepiece.org"), "Big Mom"); - customerJdbcRepository.save(customer); + repository.insert( + new CustomerCreateQuery(customer.getEmailAddress(), customer.getNickname())); Email email = new Email(customer.getEmailAddress()); // then - customerJdbcRepository.deleteByEmailAddress(email); - Optional foundCustomer = customerJdbcRepository - .findByEmailAddress(email); - - // when - assertThat(foundCustomer).isNotPresent(); - } - - @Test - @DisplayName("deleteAll_저장된 모든 Customer_모든 Customer를 제거한다.") - void deleteAll_MultipleCustomers_AllCustomersDeleted() { - // given - Customer customer1 = new Customer( - new Email("Linlin@onepiece.org"), "Big Mom"); - Customer customer2 = new Customer( - new Email("loopy@onepiece.org"), "Pirate King"); - customerJdbcRepository.save(customer1); - customerJdbcRepository.save(customer2); - - // then - customerJdbcRepository.deleteAll(); - List allCustomers = customerJdbcRepository.findAll(); + repository.deleteByCustomerId(customer.getEmailAddress()); + List actualAllList = repository.findAll(); // when - assertThat(allCustomers).isEmpty(); + assertThat(actualAllList).hasSize(0); } } diff --git a/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucher/JdbcVoucherResultSetVoucherRepositoryTestCreate.java b/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucher/JdbcVoucherResultSetVoucherRepositoryTestCreate.java deleted file mode 100644 index 20fe2e75de..0000000000 --- a/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucher/JdbcVoucherResultSetVoucherRepositoryTestCreate.java +++ /dev/null @@ -1,138 +0,0 @@ -package com.wonu606.vouchermanager.repository.voucher; - -import static org.assertj.core.api.Assertions.assertThat; - -import com.wonu606.vouchermanager.domain.voucher.FixedAmountVoucher; -import com.wonu606.vouchermanager.domain.voucher.PercentageVoucher; -import com.wonu606.vouchermanager.domain.voucher.Voucher; -import com.wonu606.vouchermanager.repository.voucher.resultset.VoucherCreateResultSet; -import com.wonu606.vouchermanager.domain.voucher.discountvalue.FixedAmountValue; -import com.wonu606.vouchermanager.domain.voucher.discountvalue.PercentageDiscountValue; -import java.util.List; -import java.util.Optional; -import java.util.UUID; -import javax.sql.DataSource; -import org.junit.jupiter.api.BeforeEach; -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.jdbc.JdbcTest; - -@JdbcTest -@DisplayName("JdbcVoucherResultSetRepository 테스트") -class JdbcVoucherResultSetVoucherRepositoryTestCreate { - - private VoucherJdbcRepository voucherJdbcRepository; - - @Autowired - private DataSource dataSource; - - @BeforeEach - void setUp() { - voucherJdbcRepository = new VoucherJdbcRepository(dataSource); - } - - @Test - @DisplayName("저장 시_저장되어 있지 않은 Voucher라면_Voucher가 저장된다.") - void save_UnsavedVoucher_VoucherSaved() { - // given - Voucher voucher = new FixedAmountVoucher( - UUID.randomUUID(), new FixedAmountValue(50.0)); - - // when - voucherJdbcRepository.save(voucher); - var result = voucherJdbcRepository.findById(voucher.getUuid()); - - // then - assertThat(result).isPresent(); - assertThat(result.get().getUuid()).isEqualTo(voucher.getUuid()); - assertThat(result.get().getSimpleName()).isEqualTo(voucher.getClass().getSimpleName()); - assertThat(result.get().getDiscountValue()).isEqualTo(voucher.getDiscountValue()); - } - - @Test - @DisplayName("findById_저장된 Voucher라면_해당 Voucher를 반환한다.") - void findById_savedVoucher_ReturnsVoucher() { - // given - Voucher voucher = new FixedAmountVoucher( - UUID.randomUUID(), new FixedAmountValue(50.0)); - voucherJdbcRepository.save(voucher); - - // when - Optional foundVoucher = voucherJdbcRepository.findById( - voucher.getUuid()); - - // then - assertThat(foundVoucher).isPresent(); - assertThat(foundVoucher.get().getUuid()).isEqualTo(voucher.getUuid()); - } - - @Test - @DisplayName("findById_저장되지 않은 Voucher_Empty를 반환한다.") - void findById_UnsavedVoucher_ReturnsEmpty() { - // given - UUID nonExistentId = UUID.randomUUID(); - - // when - Optional foundVoucher = voucherJdbcRepository.findById( - nonExistentId); - - // then - assertThat(foundVoucher).isNotPresent(); - } - - @Test - @DisplayName("findAll_저장된 Vouchers_저장된 모든 Vouchers들을 반환한다.") - void findAll_SavedVouchers_ReturnsAllVouchers() { - // given - Voucher voucher1 = new FixedAmountVoucher( - UUID.randomUUID(), new FixedAmountValue(50.0)); - Voucher voucher2 = new PercentageVoucher( - UUID.randomUUID(), new PercentageDiscountValue(30.0)); - voucherJdbcRepository.save(voucher1); - voucherJdbcRepository.save(voucher2); - - // when - List allVouchers = voucherJdbcRepository.findAll(); - - // then - assertThat(allVouchers).hasSize(2); - assertThat(allVouchers).extracting("uuid").contains(voucher1.getUuid(), voucher2.getUuid()); - } - - @Test - @DisplayName("deleteById_저장된 Vocuher_Voucher를 제거한다.") - void deleteById_SavedVoucher_VoucherDeleted() { - // given - Voucher voucher = new FixedAmountVoucher( - UUID.randomUUID(), new FixedAmountValue(50.0)); - voucherJdbcRepository.save(voucher); - - // then - voucherJdbcRepository.deleteById(voucher.getUuid()); - Optional foundVoucher = voucherJdbcRepository.findById( - voucher.getUuid()); - - // when - assertThat(foundVoucher).isNotPresent(); - } - - @Test - @DisplayName("deleteAll_저장된 모든 Voucher_모든 Voucher를 제거한다.") - void deleteAll_SavedMultipleVouchers_AllVouchersDeleted() { - // given - Voucher voucher1 = new FixedAmountVoucher( - UUID.randomUUID(), new FixedAmountValue(50.0)); - Voucher voucher2 = new PercentageVoucher( - UUID.randomUUID(), new PercentageDiscountValue(30.0)); - voucherJdbcRepository.save(voucher1); - voucherJdbcRepository.save(voucher2); - - // then - voucherJdbcRepository.deleteAll(); - List allVouchers = voucherJdbcRepository.findAll(); - - // when - assertThat(allVouchers).isEmpty(); - } -} diff --git a/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucher/VoucherJdbcRepositoryTest.java b/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucher/VoucherJdbcRepositoryTest.java new file mode 100644 index 0000000000..389b63d9ca --- /dev/null +++ b/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucher/VoucherJdbcRepositoryTest.java @@ -0,0 +1,144 @@ +//package com.wonu606.vouchermanager.repository.voucher; +// +//import static org.assertj.core.api.Assertions.assertThat; +// +//import com.wonu606.vouchermanager.domain.voucher.FixedAmountVoucher; +//import com.wonu606.vouchermanager.domain.voucher.PercentageVoucher; +//import com.wonu606.vouchermanager.domain.voucher.Voucher; +//import com.wonu606.vouchermanager.repository.voucher.reader.VoucherJdbcReader; +//import com.wonu606.vouchermanager.repository.voucher.reader.rowmapper.VoucherReaderRowMapperManager; +//import com.wonu606.vouchermanager.repository.voucher.resultset.VoucherCreateResultSet; +//import com.wonu606.vouchermanager.domain.voucher.discountvalue.FixedAmountValue; +//import com.wonu606.vouchermanager.domain.voucher.discountvalue.PercentageDiscountValue; +//import com.wonu606.vouchermanager.repository.voucher.store.VoucherJdbcStore; +//import java.util.List; +//import java.util.Optional; +//import java.util.UUID; +//import javax.sql.DataSource; +//import org.junit.jupiter.api.BeforeEach; +//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.jdbc.JdbcTest; +//import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; +// +//@JdbcTest +//@DisplayName("JdbcVoucherResultSetRepository 테스트") +//class VoucherJdbcRepositoryTest { +// +// private VoucherJdbcRepository voucherJdbcRepository; +// +// @Autowired +// private NamedParameterJdbcTemplate namedParameterJdbcTemplate; +// +// @BeforeEach +// void setUp() { +// VoucherJdbcReader reader = new VoucherJdbcReader(namedParameterJdbcTemplate, new VoucherReaderRowMapperManager()); +// VoucherJdbcStore store = new VoucherJdbcStore(namedParameterJdbcTemplate); +// voucherJdbcRepository = new VoucherJdbcRepository(reader, store); +// } +// +// @Test +// @DisplayName("저장 시_저장되어 있지 않은 Voucher라면_Voucher가 저장된다.") +// void save_UnsavedVoucher_VoucherSaved() { +// // given +// Voucher voucher = new FixedAmountVoucher( +// UUID.randomUUID(), new FixedAmountValue(50.0)); +// +// // when +// voucherJdbcRepository.save(voucher); +// var result = voucherJdbcRepository.findById(voucher.getUuid()); +// +// // then +// assertThat(result).isPresent(); +// assertThat(result.get().getUuid()).isEqualTo(voucher.getUuid()); +// assertThat(result.get().getSimpleName()).isEqualTo(voucher.getClass().getSimpleName()); +// assertThat(result.get().getDiscountValue()).isEqualTo(voucher.getDiscountValue()); +// } +// +// @Test +// @DisplayName("findById_저장된 Voucher라면_해당 Voucher를 반환한다.") +// void findById_savedVoucher_ReturnsVoucher() { +// // given +// Voucher voucher = new FixedAmountVoucher( +// UUID.randomUUID(), new FixedAmountValue(50.0)); +// voucherJdbcRepository.save(voucher); +// +// // when +// Optional foundVoucher = voucherJdbcRepository.findById( +// voucher.getUuid()); +// +// // then +// assertThat(foundVoucher).isPresent(); +// assertThat(foundVoucher.get().getUuid()).isEqualTo(voucher.getUuid()); +// } +// +// @Test +// @DisplayName("findById_저장되지 않은 Voucher_Empty를 반환한다.") +// void findById_UnsavedVoucher_ReturnsEmpty() { +// // given +// UUID nonExistentId = UUID.randomUUID(); +// +// // when +// Optional foundVoucher = voucherJdbcRepository.findById( +// nonExistentId); +// +// // then +// assertThat(foundVoucher).isNotPresent(); +// } +// +// @Test +// @DisplayName("findAll_저장된 Vouchers_저장된 모든 Vouchers들을 반환한다.") +// void findAll_SavedVouchers_ReturnsAllVouchers() { +// // given +// Voucher voucher1 = new FixedAmountVoucher( +// UUID.randomUUID(), new FixedAmountValue(50.0)); +// Voucher voucher2 = new PercentageVoucher( +// UUID.randomUUID(), new PercentageDiscountValue(30.0)); +// voucherJdbcRepository.save(voucher1); +// voucherJdbcRepository.save(voucher2); +// +// // when +// List allVouchers = voucherJdbcRepository.findAll(); +// +// // then +// assertThat(allVouchers).hasSize(2); +// assertThat(allVouchers).extracting("uuid").contains(voucher1.getUuid(), voucher2.getUuid()); +// } +// +// @Test +// @DisplayName("deleteById_저장된 Vocuher_Voucher를 제거한다.") +// void deleteById_SavedVoucher_VoucherDeleted() { +// // given +// Voucher voucher = new FixedAmountVoucher( +// UUID.randomUUID(), new FixedAmountValue(50.0)); +// voucherJdbcRepository.save(voucher); +// +// // then +// voucherJdbcRepository.deleteById(voucher.getUuid()); +// Optional foundVoucher = voucherJdbcRepository.findById( +// voucher.getUuid()); +// +// // when +// assertThat(foundVoucher).isNotPresent(); +// } +// +// @Test +// @DisplayName("deleteAll_저장된 모든 Voucher_모든 Voucher를 제거한다.") +// void deleteAll_SavedMultipleVouchers_AllVouchersDeleted() { +// // given +// Voucher voucher1 = new FixedAmountVoucher( +// UUID.randomUUID(), new FixedAmountValue(50.0)); +// Voucher voucher2 = new PercentageVoucher( +// UUID.randomUUID(), new PercentageDiscountValue(30.0)); +// voucherJdbcRepository.save(voucher1); +// voucherJdbcRepository.save(voucher2); +// +// // then +// voucherJdbcRepository.deleteAll(); +// List allVouchers = voucherJdbcRepository.findAll(); +// +// // when +// assertThat(allVouchers).isEmpty(); +// } +//} diff --git a/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucher/WrappingVoucherRepositoryTest.java b/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucher/WrappingVoucherRepositoryTest.java deleted file mode 100644 index 2589779d4a..0000000000 --- a/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucher/WrappingVoucherRepositoryTest.java +++ /dev/null @@ -1,138 +0,0 @@ -package com.wonu606.vouchermanager.repository.voucher; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.BDDMockito.given; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; - -import com.wonu606.vouchermanager.domain.voucher.FixedAmountVoucher; -import com.wonu606.vouchermanager.domain.voucher.PercentageVoucher; -import com.wonu606.vouchermanager.domain.voucher.Voucher; -import com.wonu606.vouchermanager.repository.voucher.resultset.VoucherCreateResultSet; -import com.wonu606.vouchermanager.domain.voucher.discountvalue.FixedAmountValue; -import com.wonu606.vouchermanager.domain.voucher.discountvalue.PercentageDiscountValue; -import java.util.ArrayList; -import java.util.List; -import java.util.Optional; -import java.util.UUID; -import java.util.stream.Stream; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.Arguments; -import org.junit.jupiter.params.provider.MethodSource; - -@DisplayName("MappingVoucherRepository 테스트") -class WrappingVoucherRepositoryTest { - - private VoucherResultSetRepository voucherResultSetRepository; - - private WrappingVoucherRepository voucherRepository; - - @BeforeEach - void setUp() { - voucherResultSetRepository = mock(VoucherResultSetRepository.class); - voucherRepository = new WrappingVoucherRepository(voucherResultSetRepository); - } - - @Test - @DisplayName("save_바우처_바우처를 저장하고 반환한다.") - void save_VoucherProvided_ReturnVoucher() { - // given - Voucher voucher = mock(Voucher.class); - - // then - voucherRepository.save(voucher); - - // when - verify(voucherResultSetRepository, times(1)).save(voucher); - } - - @Test - @DisplayName("findById_존재하는 uuid_바우처로 변환하여 반환한다.") - void findById_ExistingUuid_ReturnsExpectedVoucher() { - // given - FixedAmountVoucher expectedVoucher = new FixedAmountVoucher( - UUID.randomUUID(), new FixedAmountValue(50.0) - ); - VoucherCreateResultSet enteredResultSet = new VoucherCreateResultSet( - expectedVoucher.getUuid(), - expectedVoucher.getClass().getSimpleName(), - expectedVoucher.getDiscountValue() - ); - - given(voucherResultSetRepository.findById(expectedVoucher.getUuid())) - .willReturn(Optional.of(enteredResultSet)); - - // when - Optional actualVoucher = voucherRepository.findById(expectedVoucher.getUuid()); - - // then - assertThat(actualVoucher.isPresent()).isTrue(); - assertThat(actualVoucher.get()).isEqualTo(expectedVoucher); - } - - @ParameterizedTest - @MethodSource("givenVouchers") - @DisplayName("findAll_빈 인수_저장된 모든 바우처를 반환한다.") - void findAll_EmptyArgument_SavedAllVoucher(Voucher expectedVoucher1, Voucher expectedVoucher2) { - // given - List expectedVoucherList = new ArrayList<>(); - expectedVoucherList.add(expectedVoucher1); - expectedVoucherList.add(expectedVoucher2); - - VoucherCreateResultSet expectedResultSet1 = new VoucherCreateResultSet( - expectedVoucher1.getUuid(), expectedVoucher1.getClass().getSimpleName(), - expectedVoucher1.getDiscountValue()); - VoucherCreateResultSet expectedResultSet2 = new VoucherCreateResultSet( - expectedVoucher2.getUuid(), expectedVoucher2.getClass().getSimpleName(), - expectedVoucher2.getDiscountValue()); - - List expectedVoucherCreateResultSetList = new ArrayList<>(); - expectedVoucherCreateResultSetList.add(expectedResultSet1); - expectedVoucherCreateResultSetList.add(expectedResultSet2); - - given(voucherResultSetRepository.findAll()).willReturn(expectedVoucherCreateResultSetList); - - // then - List actualVoucherList = voucherRepository.findAll(); - - // when - assertThat(actualVoucherList).hasSameSizeAs(expectedVoucherList); - assertThat(actualVoucherList).containsExactlyInAnyOrderElementsOf(expectedVoucherList); - } - - @Test - @DisplayName("deleteById_UUID_같은 UUID를 반환한다.") - void deleteById_Uuid_ReturnsSameUuid() { - // given - UUID expectedUuid = UUID.randomUUID(); - - // when - voucherRepository.deleteById(expectedUuid); - - // then - verify(voucherResultSetRepository, times(1)).deleteById(expectedUuid); - } - - @Test - @DisplayName("deleteAll_빈 인자_ResultSetRepository의 deleeteAll을 실행한다.") - void deleteAll_EmptyArgument_ExecuteVoucherResultSetRepositoryDeleteAllMethod() { - // when - voucherRepository.deleteAll(); - - // then - verify(voucherResultSetRepository, times(1)).deleteAll(); - } - - static Stream givenVouchers() { - Voucher expectedVoucher1 = new PercentageVoucher( - UUID.randomUUID(), new PercentageDiscountValue(50.0)); - Voucher expectedVoucher2 = new FixedAmountVoucher( - UUID.randomUUID(), new FixedAmountValue(50.0)); - - return Stream.of(Arguments.of(expectedVoucher1, expectedVoucher2)); - } -} diff --git a/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucherwallet/JdbcVoucherWalletRepositoryTest.java b/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucherwallet/JdbcVoucherWalletRepositoryTest.java deleted file mode 100644 index 008aca927c..0000000000 --- a/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucherwallet/JdbcVoucherWalletRepositoryTest.java +++ /dev/null @@ -1,130 +0,0 @@ -package com.wonu606.vouchermanager.repository.voucherwallet; - -import static org.assertj.core.api.Assertions.assertThat; - -import com.wonu606.vouchermanager.domain.voucherwallet.VoucherWallet; -import com.wonu606.vouchermanager.domain.customer.Customer; -import com.wonu606.vouchermanager.domain.customer.email.Email; -import com.wonu606.vouchermanager.domain.voucher.FixedAmountVoucher; -import com.wonu606.vouchermanager.domain.voucher.PercentageVoucher; -import com.wonu606.vouchermanager.domain.voucher.Voucher; -import com.wonu606.vouchermanager.domain.voucher.discountvalue.FixedAmountValue; -import com.wonu606.vouchermanager.domain.voucher.discountvalue.PercentageDiscountValue; -import com.wonu606.vouchermanager.repository.customer.CustomerJdbcRepository; -import com.wonu606.vouchermanager.repository.voucher.VoucherJdbcRepository; -import java.util.List; -import java.util.UUID; -import java.util.stream.Stream; -import javax.sql.DataSource; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.Arguments; -import org.junit.jupiter.params.provider.MethodSource; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.jdbc.JdbcTest; - -@JdbcTest -@DisplayName("JdbcCustomerVoucherWalletRepository 테스트") -class JdbcVoucherWalletRepositoryTest { - - private JdbcVoucherWalletRepository customerVoucherWalletRepository; - - @Autowired - private DataSource dataSource; - - @BeforeEach - void setUp() { - customerVoucherWalletRepository = new JdbcVoucherWalletRepository(dataSource); - - VoucherJdbcRepository voucherResultSetRepository = - new VoucherJdbcRepository(dataSource); - CustomerJdbcRepository customerResultSetRepository = - new CustomerJdbcRepository(dataSource); - - givenCustomerVouchers().forEach( - arguments -> { - Customer customer = (Customer) arguments.get()[0]; - Voucher voucher = (Voucher) arguments.get()[1]; - customerResultSetRepository.save(customer); - voucherResultSetRepository.save(voucher); - - customerVoucherWalletRepository.save( - new VoucherWallet( - voucher.getUuid(), - new Email(customer.getEmailAddress()))); - } - ); - } - - @ParameterizedTest - @MethodSource("givenCustomerVouchers") - @DisplayName("findVoucherIdByCustomerEmailAddress_저장된 이메일 주소라면_매핑된 Voucher id를 반환한다.") - void findVoucherIdByCustomerEmailAddress_SavedEmailAddress_ReturnsVoucherIds( - Customer customer, Voucher voucher) { - // given - Email email = new Email(customer.getEmailAddress()); - - // when - List actualUuids = - customerVoucherWalletRepository.findOwnedVouchersByCustomer(email); - - // then - assertThat(actualUuids).hasSize(1); - assertThat(actualUuids.get(0)).isEqualTo(voucher.getUuid()); - } - - @ParameterizedTest - @MethodSource("givenCustomerVouchers") - @DisplayName("deleteByCustomerVoucherWallet_저장된 월렛이면_해당 월렛을 제거한다.") - void deleteByCustomerVoucherWallet_SavedWallet_Deleted(Customer customer, Voucher voucher) { - // given - VoucherWallet voucherWallet = - new VoucherWallet( - voucher.getUuid(), - new Email(customer.getEmailAddress())); - - // when - customerVoucherWalletRepository.delete(voucherWallet); - - // then - List emailAddresses = - customerVoucherWalletRepository.findOwnedCustomersByVoucher(voucher.getUuid()); - assertThat(emailAddresses).hasSize(0); - } - - @ParameterizedTest - @MethodSource("givenCustomerVouchers") - @DisplayName("findEmailAddressesByVoucherId_할당된 VoucherId라면_가지고 있는 Customer의 EmailAddress 반환한다.") - void findEmailAddressesByVoucherId_SavedVoucherId_ReturnsEmailAddresses( - Customer customer, Voucher voucher) { - // given - UUID voucherId = voucher.getUuid(); - - // when - List emailAddresses = - customerVoucherWalletRepository.findOwnedCustomersByVoucher(voucherId); - - // then - assertThat(emailAddresses).hasSize(1); - assertThat(emailAddresses.get(0)).isEqualTo(customer.getEmailAddress()); - } - - static Stream givenCustomerVouchers() { - Customer customer1 = new Customer( - new Email("Linlin@onepiece.org"), "Big Mom"); - Customer customer2 = new Customer( - new Email("loopy@onepiece.org"), "Pirate King"); - - UUID uuid1 = UUID.fromString("123e4567-e89b-12d3-a456-426614174000"); - UUID uuid2 = UUID.fromString("123e4567-e89b-12d3-a456-426614174001"); - Voucher voucher1 = new PercentageVoucher( - uuid1, new PercentageDiscountValue(50.0)); - Voucher voucher2 = new FixedAmountVoucher( - uuid2, new FixedAmountValue(50.0)); - - return Stream.of( - Arguments.of(customer1, voucher1), - Arguments.of(customer2, voucher2)); - } -} diff --git a/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucherwallet/VoucherWalletJdbcRepositoryTest.java b/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucherwallet/VoucherWalletJdbcRepositoryTest.java new file mode 100644 index 0000000000..deb889c14b --- /dev/null +++ b/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucherwallet/VoucherWalletJdbcRepositoryTest.java @@ -0,0 +1,140 @@ +package com.wonu606.vouchermanager.repository.voucherwallet; + +import static org.assertj.core.api.Assertions.assertThat; + +import com.wonu606.vouchermanager.domain.customer.Customer; +import com.wonu606.vouchermanager.domain.customer.email.Email; +import com.wonu606.vouchermanager.domain.voucher.Voucher; +import com.wonu606.vouchermanager.repository.voucher.VoucherJdbcRepository; +import com.wonu606.vouchermanager.repository.voucher.query.VoucherInsertQuery; +import com.wonu606.vouchermanager.repository.voucher.reader.VoucherJdbcReader; +import com.wonu606.vouchermanager.repository.voucher.reader.VoucherReader; +import com.wonu606.vouchermanager.repository.voucher.reader.rowmapper.VoucherReaderRowMapperManager; +import com.wonu606.vouchermanager.repository.voucher.store.VoucherJdbcStore; +import com.wonu606.vouchermanager.repository.voucher.store.VoucherStore; +import com.wonu606.vouchermanager.repository.voucherwallet.query.OwnedCustomersQuery; +import com.wonu606.vouchermanager.repository.voucherwallet.query.OwnedVouchersQuery; +import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletDeleteQuery; +import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletInsertQuery; +import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletUpdateQuery; +import com.wonu606.vouchermanager.repository.voucherwallet.reader.VoucherWalletJdbcReader; +import com.wonu606.vouchermanager.repository.voucherwallet.reader.VoucherWalletReader; +import com.wonu606.vouchermanager.repository.voucherwallet.reader.rowmapper.VoucherWalletReaderRowMapperManager; +import com.wonu606.vouchermanager.repository.voucherwallet.resultset.OwnedCustomerResultSet; +import com.wonu606.vouchermanager.repository.voucherwallet.resultset.OwnedVoucherResultSet; +import com.wonu606.vouchermanager.repository.voucherwallet.store.VoucherWalletJdbcStore; +import com.wonu606.vouchermanager.repository.voucherwallet.store.VoucherWalletStore; +import java.util.List; +import java.util.stream.Stream; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.jdbc.JdbcTest; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +@JdbcTest +@DisplayName("JdbcCustomerVoucherWalletRepository 테스트") +class VoucherWalletJdbcRepositoryTest { + + private VoucherWalletJdbcRepository voucherWalletJdbcRepository; + private VoucherJdbcRepository voucherJdbcRepository; + + @Autowired + private NamedParameterJdbcTemplate namedParameterJdbcTemplate; + + @BeforeEach + void setUp() { + VoucherWalletReader voucherWalletReader = new VoucherWalletJdbcReader( + namedParameterJdbcTemplate, + new VoucherWalletReaderRowMapperManager()); + VoucherWalletStore voucherWalletJdbcStore = new VoucherWalletJdbcStore( + namedParameterJdbcTemplate); + voucherWalletJdbcRepository = new VoucherWalletJdbcRepository(voucherWalletReader, + voucherWalletJdbcStore); + + VoucherReader voucherReader = new VoucherJdbcReader(namedParameterJdbcTemplate, + new VoucherReaderRowMapperManager()); + VoucherStore voucherStore = new VoucherJdbcStore(namedParameterJdbcTemplate); + voucherJdbcRepository = new VoucherJdbcRepository(voucherReader, voucherStore); + } + + @ParameterizedTest + @MethodSource("givenVoucher") + @DisplayName("findOwnedVouchersByCustomer_저장된 Customer가 있다면_매핑된 Voucher id를 반환한다.") + void findOwnedVouchersByCustomer_SavedEmailAddress_ReturnsVoucherIds(Voucher voucher) { + // given + voucherJdbcRepository.insert(new VoucherInsertQuery(voucher.getClass().getSimpleName(), + voucher.getUuid().toString(), voucher.getDiscountValue())); + + String expectedVouchedId = voucher.getUuid().toString(); + voucherWalletJdbcRepository.insert(new WalletInsertQuery(expectedVouchedId)); + String expectCustomId = "Hello@naver.com"; + voucherWalletJdbcRepository.update( + new WalletUpdateQuery(expectCustomId, expectedVouchedId)); + + // when + List actualOwnedVouchersByCustomer = voucherWalletJdbcRepository.findOwnedVouchersByCustomer( + new OwnedVouchersQuery(expectCustomId)); + + // then + assertThat(actualOwnedVouchersByCustomer).hasSize(1); + assertThat(actualOwnedVouchersByCustomer.get(0).getVoucherId()).isEqualTo( + expectedVouchedId); + } + + @ParameterizedTest + @MethodSource("givenVoucher") + @DisplayName("findOwnedCustomersByVoucher_할당된 VoucherId라면_가지고 있는 Customer의 Email을 반환한다.") + void findOwnedCustomersByVoucher_SavedVoucherId_ReturnsEmail(Voucher voucher) { + // given + voucherJdbcRepository.insert(new VoucherInsertQuery(voucher.getClass().getSimpleName(), + voucher.getUuid().toString(), voucher.getDiscountValue())); + + String expectedVouchedId = voucher.getUuid().toString(); + voucherWalletJdbcRepository.insert(new WalletInsertQuery(expectedVouchedId)); + String expectCustomId = "Hello@naver.com"; + voucherWalletJdbcRepository.update( + new WalletUpdateQuery(expectCustomId, expectedVouchedId)); + + // when + List actualOwnedCustomersByVoucher = voucherWalletJdbcRepository.findOwnedCustomersByVoucher( + new OwnedCustomersQuery(expectedVouchedId)); + + // then + assertThat(actualOwnedCustomersByVoucher).hasSize(1); + assertThat(actualOwnedCustomersByVoucher.get(0).getCustomerId()).isEqualTo(expectCustomId); + } + + @ParameterizedTest + @MethodSource("givenVoucher") + @DisplayName("delete_저장된 VoucherId라면_삭제한다.") + void delete_SavedVoucherId_delete(Voucher voucher) { + // given + voucherJdbcRepository.insert(new VoucherInsertQuery(voucher.getClass().getSimpleName(), + voucher.getUuid().toString(), voucher.getDiscountValue())); + + String expectedVouchedId = voucher.getUuid().toString(); + voucherWalletJdbcRepository.insert(new WalletInsertQuery(expectedVouchedId)); + voucherWalletJdbcRepository.insert(new WalletInsertQuery(expectedVouchedId)); + + // when + voucherWalletJdbcRepository.delete(new WalletDeleteQuery("NULL", expectedVouchedId)); + voucherWalletJdbcRepository.delete(new WalletDeleteQuery("NULL", expectedVouchedId)); + + List actualOwnedCustomersByVoucher = voucherWalletJdbcRepository.findOwnedCustomersByVoucher( + new OwnedCustomersQuery(expectedVouchedId)); + + // then + assertThat(actualOwnedCustomersByVoucher).hasSize(0); + } + + static Stream givenVoucher() { + Customer customer1 = new Customer( + new Email("Linlin@onepiece.org"), "Big Mom"); + + return Stream.of(Arguments.of(customer1)); + } +} diff --git a/voucher-manager/src/test/java/com/wonu606/vouchermanager/service/voucher/VoucherFactoryTest.java b/voucher-manager/src/test/java/com/wonu606/vouchermanager/service/voucher/VoucherFactoryTest.java index d60b62ca6d..a9aa587896 100644 --- a/voucher-manager/src/test/java/com/wonu606/vouchermanager/service/voucher/VoucherFactoryTest.java +++ b/voucher-manager/src/test/java/com/wonu606/vouchermanager/service/voucher/VoucherFactoryTest.java @@ -8,7 +8,7 @@ import com.wonu606.vouchermanager.domain.voucher.PercentageVoucher; import com.wonu606.vouchermanager.domain.voucher.Voucher; import com.wonu606.vouchermanager.service.voucher.param.VoucherCreateParam; -import com.wonu606.vouchermanager.service.util.UUIDGenerator; +import com.wonu606.vouchermanager.service.voucher.factory.util.UUIDGenerator; import com.wonu606.vouchermanager.service.voucher.factory.VoucherFactory; import java.util.UUID; import org.junit.jupiter.api.BeforeEach; diff --git a/voucher-manager/src/test/java/com/wonu606/vouchermanager/service/voucher/VoucherServiceTest.java b/voucher-manager/src/test/java/com/wonu606/vouchermanager/service/voucher/VoucherServiceTest.java index eda566018a..2334b10c1e 100644 --- a/voucher-manager/src/test/java/com/wonu606/vouchermanager/service/voucher/VoucherServiceTest.java +++ b/voucher-manager/src/test/java/com/wonu606/vouchermanager/service/voucher/VoucherServiceTest.java @@ -1,68 +1,68 @@ -package com.wonu606.vouchermanager.service.voucher; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.mockito.BDDMockito.given; -import static org.mockito.BDDMockito.then; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.times; - -import com.wonu606.vouchermanager.domain.voucher.Voucher; -import com.wonu606.vouchermanager.service.voucher.param.VoucherCreateParam; -import com.wonu606.vouchermanager.repository.voucher.VoucherRepository; -import com.wonu606.vouchermanager.service.voucher.factory.VoucherFactory; -import java.util.Arrays; -import java.util.List; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Test; - -@DisplayName("VoucherService 테스트") -public class VoucherServiceTest { - - private VoucherFactory factory; - - private VoucherRepository voucherRepository; - - private VoucherService voucherService; - - @BeforeEach - public void setup() { - this.factory = mock(VoucherFactory.class); - this.voucherRepository = mock(LocalMemoryVoucherVoucherRepository.class); - this.voucherService = new VoucherService(factory, voucherRepository); - } - - @Test - @DisplayName("VoucherDto가 주어지고_createVoucher하면_바우처를 생성한다.") - public void GivenVoucherDto_WhenCreateVoucher_ThenReturnExpectedVoucher() { - // Given - VoucherCreateParam dto = mock(VoucherCreateParam.class); - Voucher expectedVoucher = mock(Voucher.class); - - given(factory.create(dto)).willReturn(expectedVoucher); - given(voucherRepository.save(expectedVoucher)).willReturn(expectedVoucher); - - // When - Voucher actualVoucher = voucherService.createVoucher(dto); - - // Then - then(factory).should(times(1)).create(dto); - then(voucherRepository).should(times(1)).save(expectedVoucher); - assertEquals(expectedVoucher, actualVoucher); - } - - @Test - @DisplayName("Voucher들을 저장한 뒤_getVoucherList하면_바우처들을 반환한다.") - public void GivenSavedVouchers_WhenGetVoucherList_ThenReturnsExpectedVouchers() { - // Given - List expectedVouchers = Arrays.asList(mock(Voucher.class), mock(Voucher.class)); - given(voucherRepository.findAll()).willReturn(expectedVouchers); - - // When - List actualVouchers = voucherService.getVoucherList(); - - // Then - then(voucherRepository).should(times(1)).findAll(); - assertEquals(expectedVouchers, actualVouchers); - } -} +//package com.wonu606.vouchermanager.service.voucher; +// +//import static org.junit.jupiter.api.Assertions.assertEquals; +//import static org.mockito.BDDMockito.given; +//import static org.mockito.BDDMockito.then; +//import static org.mockito.Mockito.mock; +//import static org.mockito.Mockito.times; +// +//import com.wonu606.vouchermanager.domain.voucher.Voucher; +//import com.wonu606.vouchermanager.service.voucher.param.VoucherCreateParam; +//import com.wonu606.vouchermanager.repository.voucher.VoucherRepository; +//import com.wonu606.vouchermanager.service.voucher.factory.VoucherFactory; +//import java.util.Arrays; +//import java.util.List; +//import org.junit.jupiter.api.BeforeEach; +//import org.junit.jupiter.api.DisplayName; +//import org.junit.jupiter.api.Test; +// +//@DisplayName("VoucherService 테스트") +//public class VoucherServiceTest { +// +// private VoucherFactory factory; +// +// private VoucherRepository voucherRepository; +// +// private VoucherService voucherService; +// +// @BeforeEach +// public void setup() { +// this.factory = mock(VoucherFactory.class); +// this.voucherRepository = mock(LocalMemoryVoucherVoucherRepository.class); +// this.voucherService = new VoucherService(factory, voucherRepository); +// } +// +// @Test +// @DisplayName("VoucherDto가 주어지고_createVoucher하면_바우처를 생성한다.") +// public void GivenVoucherDto_WhenCreateVoucher_ThenReturnExpectedVoucher() { +// // Given +// VoucherCreateParam dto = mock(VoucherCreateParam.class); +// Voucher expectedVoucher = mock(Voucher.class); +// +// given(factory.create(dto)).willReturn(expectedVoucher); +// given(voucherRepository.save(expectedVoucher)).willReturn(expectedVoucher); +// +// // When +// Voucher actualVoucher = voucherService.createVoucher(dto); +// +// // Then +// then(factory).should(times(1)).create(dto); +// then(voucherRepository).should(times(1)).save(expectedVoucher); +// assertEquals(expectedVoucher, actualVoucher); +// } +// +// @Test +// @DisplayName("Voucher들을 저장한 뒤_getVoucherList하면_바우처들을 반환한다.") +// public void GivenSavedVouchers_WhenGetVoucherList_ThenReturnsExpectedVouchers() { +// // Given +// List expectedVouchers = Arrays.asList(mock(Voucher.class), mock(Voucher.class)); +// given(voucherRepository.findAll()).willReturn(expectedVouchers); +// +// // When +// List actualVouchers = voucherService.getVoucherList(); +// +// // Then +// then(voucherRepository).should(times(1)).findAll(); +// assertEquals(expectedVouchers, actualVouchers); +// } +//} From aec5b0fadaa59a27becc4bbb61847b3c46a84b01 Mon Sep 17 00:00:00 2001 From: wonu606 Date: Mon, 24 Jul 2023 17:47:25 +0900 Subject: [PATCH 30/37] =?UTF-8?q?feat(Controller):=20Customer=20ViewContro?= =?UTF-8?q?ller=20&=20RestController=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- voucher-manager/build.gradle | 4 +- .../VoucherManagerCommandLineRunner.java | 2 +- .../customer/CustomerApiController.java | 86 +++++++++++++++++++ .../customer/CustomerController.java | 79 ++++++++++------- .../request/CustomerCreateRequest.java | 15 +++- .../request/OwnedVouchersRequest.java | 9 +- .../customer/request/WalletDeleteRequest.java | 15 +++- .../request/WalletRegisterRequest.java | 15 +++- .../src/main/resources/logback.xml | 2 +- .../templates/customer/create-form.html | 17 ++++ .../resources/templates/customer/list.html | 27 ++++++ .../customer/owned-vouchers-form.html | 15 ++++ .../customer/owned-vouchers-list.html | 39 +++++++++ 13 files changed, 281 insertions(+), 44 deletions(-) rename voucher-manager/src/main/java/com/wonu606/vouchermanager/{ => console}/VoucherManagerCommandLineRunner.java (92%) create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/CustomerApiController.java create mode 100644 voucher-manager/src/main/resources/templates/customer/create-form.html create mode 100644 voucher-manager/src/main/resources/templates/customer/list.html create mode 100644 voucher-manager/src/main/resources/templates/customer/owned-vouchers-form.html create mode 100644 voucher-manager/src/main/resources/templates/customer/owned-vouchers-list.html diff --git a/voucher-manager/build.gradle b/voucher-manager/build.gradle index 3b2ec146e5..0a5abced84 100644 --- a/voucher-manager/build.gradle +++ b/voucher-manager/build.gradle @@ -23,13 +23,13 @@ repositories { dependencies { implementation 'org.springframework.boot:spring-boot-starter-jdbc' + implementation 'org.springframework.boot:spring-boot-starter-web' + implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' testImplementation 'org.springframework.boot:spring-boot-starter-test' implementation 'org.beryx:text-io:3.4.1' testImplementation 'org.assertj:assertj-core:3.24.2' runtimeOnly 'com.mysql:mysql-connector-j' testImplementation 'com.h2database:h2' - // https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind - implementation 'com.fasterxml.jackson.core:jackson-databind:2.15.1' } tasks.named('test') { diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/VoucherManagerCommandLineRunner.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/VoucherManagerCommandLineRunner.java similarity index 92% rename from voucher-manager/src/main/java/com/wonu606/vouchermanager/VoucherManagerCommandLineRunner.java rename to voucher-manager/src/main/java/com/wonu606/vouchermanager/console/VoucherManagerCommandLineRunner.java index 951c843b86..fccc112ec4 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/VoucherManagerCommandLineRunner.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/console/VoucherManagerCommandLineRunner.java @@ -1,4 +1,4 @@ -package com.wonu606.vouchermanager; +package com.wonu606.vouchermanager.console; import com.wonu606.vouchermanager.console.cableadapter.FrontCableAdapter; import org.springframework.boot.CommandLineRunner; diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/CustomerApiController.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/CustomerApiController.java new file mode 100644 index 0000000000..246340ce06 --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/CustomerApiController.java @@ -0,0 +1,86 @@ +package com.wonu606.vouchermanager.controller.customer; + +import com.wonu606.vouchermanager.controller.customer.converter.CustomerControllerConverterManager; +import com.wonu606.vouchermanager.controller.customer.request.CustomerCreateRequest; +import com.wonu606.vouchermanager.controller.customer.request.OwnedVouchersRequest; +import com.wonu606.vouchermanager.controller.customer.request.WalletDeleteRequest; +import com.wonu606.vouchermanager.controller.customer.request.WalletRegisterRequest; +import com.wonu606.vouchermanager.controller.customer.response.CustomerCreateResponse; +import com.wonu606.vouchermanager.controller.customer.response.CustomerResponse; +import com.wonu606.vouchermanager.controller.customer.response.OwnedVoucherResponse; +import com.wonu606.vouchermanager.service.customer.CustomerService; +import com.wonu606.vouchermanager.service.customer.param.CustomerCreateParam; +import com.wonu606.vouchermanager.service.customer.param.WalletRegisterParam; +import com.wonu606.vouchermanager.service.customer.result.CustomerCreateResult; +import com.wonu606.vouchermanager.service.customer.result.CustomerResult; +import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedVouchersParam; +import com.wonu606.vouchermanager.service.voucherwallet.param.WalletDeleteParam; +import com.wonu606.vouchermanager.service.voucherwallet.result.OwnedVoucherResult; +import java.util.List; +import java.util.stream.Collectors; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/api/customers") +public class CustomerApiController { + + private final CustomerService service; + private final CustomerControllerConverterManager converterManager; + + public CustomerApiController(CustomerService service) { + this.service = service; + converterManager = new CustomerControllerConverterManager(); + } + + @PostMapping("/create") + public ResponseEntity createCustomer( + @RequestBody CustomerCreateRequest request) { + CustomerCreateParam param = converterManager.convert(request, CustomerCreateParam.class); + CustomerCreateResult result = service.createCustomer(param); + + CustomerCreateResponse response = converterManager.convert(result, CustomerCreateResponse.class); + return new ResponseEntity<>(response, HttpStatus.CREATED); + } + + @GetMapping("/list") + public ResponseEntity> getCustomerList() { + List results = service.getCustomerList(); + List responses = results.stream() + .map(rs -> converterManager.convert(rs, CustomerResponse.class)) + .collect(Collectors.toList()); + return new ResponseEntity<>(responses, HttpStatus.OK); + } + + @PostMapping("/owned-vouchers") + public ResponseEntity> getOwnedVouchersByCustomer( + @RequestBody OwnedVouchersRequest request) { + OwnedVouchersParam param = converterManager.convert(request, OwnedVouchersParam.class); + List results = service.findOwnedVouchersByCustomer(param); + + List responses = results.stream() + .map(rs -> converterManager.convert(rs, OwnedVoucherResponse.class)) + .collect(Collectors.toList()); + + return new ResponseEntity<>(responses, HttpStatus.OK); + } + + @PostMapping("/wallet/delete") + public ResponseEntity deleteWallet(@RequestBody WalletDeleteRequest request) { + WalletDeleteParam param = converterManager.convert(request, WalletDeleteParam.class); + service.deleteWallet(param); + return new ResponseEntity<>(HttpStatus.OK); + } + + @PostMapping("/wallet/register") + public ResponseEntity registerToWallet(@RequestBody WalletRegisterRequest request) { + WalletRegisterParam param = converterManager.convert(request, WalletRegisterParam.class); + service.registerToWallet(param); + return new ResponseEntity<>(HttpStatus.CREATED); + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/CustomerController.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/CustomerController.java index 6c4128efd5..7a53efde12 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/CustomerController.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/CustomerController.java @@ -1,28 +1,31 @@ package com.wonu606.vouchermanager.controller.customer; -import com.fasterxml.jackson.databind.ObjectMapper; import com.wonu606.vouchermanager.controller.customer.converter.CustomerControllerConverterManager; import com.wonu606.vouchermanager.controller.customer.request.CustomerCreateRequest; import com.wonu606.vouchermanager.controller.customer.request.OwnedVouchersRequest; import com.wonu606.vouchermanager.controller.customer.request.WalletDeleteRequest; import com.wonu606.vouchermanager.controller.customer.request.WalletRegisterRequest; -import com.wonu606.vouchermanager.controller.customer.response.CustomerCreateResponse; import com.wonu606.vouchermanager.controller.customer.response.CustomerResponse; import com.wonu606.vouchermanager.controller.customer.response.OwnedVoucherResponse; import com.wonu606.vouchermanager.service.customer.CustomerService; import com.wonu606.vouchermanager.service.customer.param.CustomerCreateParam; import com.wonu606.vouchermanager.service.customer.param.WalletRegisterParam; -import com.wonu606.vouchermanager.service.customer.result.CustomerCreateResult; import com.wonu606.vouchermanager.service.customer.result.CustomerResult; import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedVouchersParam; import com.wonu606.vouchermanager.service.voucherwallet.param.WalletDeleteParam; import com.wonu606.vouchermanager.service.voucherwallet.result.OwnedVoucherResult; -import java.io.IOException; import java.util.List; import java.util.stream.Collectors; -import org.springframework.stereotype.Component; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.servlet.mvc.support.RedirectAttributes; -@Component +@Controller +@RequestMapping("/customers") public class CustomerController { private final CustomerService service; @@ -33,56 +36,66 @@ public CustomerController(CustomerService service) { converterManager = new CustomerControllerConverterManager(); } - public String createCustomer(CustomerCreateRequest request) { + @GetMapping("/create") + public String createCustomerForm() { + return "customer/create-form"; + } + + @PostMapping("/create") + public String createCustomer(@ModelAttribute CustomerCreateRequest request, + RedirectAttributes redirectAttributes) { CustomerCreateParam param = converterManager.convert(request, CustomerCreateParam.class); - CustomerCreateResult result = service.createCustomer(param); - - CustomerCreateResponse response = converterManager.convert(result, - CustomerCreateResponse.class); - ObjectMapper objectMapper = new ObjectMapper(); - try { - return objectMapper.writeValueAsString(response); - } catch (IOException e) { - throw new RuntimeException(e); - } + service.createCustomer(param); + + return "redirect:/customers/list"; } - public String getCustomerList() { + @GetMapping("/list") + public String getCustomerList(Model model) { List results = service.getCustomerList(); List responses = results.stream() .map(rs -> converterManager.convert(rs, CustomerResponse.class)) .collect(Collectors.toList()); - ObjectMapper objectMapper = new ObjectMapper(); - try { - return objectMapper.writeValueAsString(responses); - } catch (IOException e) { - throw new RuntimeException(e); - } + + model.addAttribute("responses", responses); + return "customer/list"; // returns the Thymeleaf view name + } + + @GetMapping("/owned-vouchers") + public String getOwnedVouchersByCustomerForm() { + return "customer/owned-vouchers-form"; } - public String getOwnedVouchersByCustomer(OwnedVouchersRequest request) { + @PostMapping("/owned-vouchers") + public String getOwnedVouchersByCustomer(@ModelAttribute OwnedVouchersRequest request, + Model model) { OwnedVouchersParam param = converterManager.convert(request, OwnedVouchersParam.class); List results = service.findOwnedVouchersByCustomer(param); List responses = results.stream() .map(rs -> converterManager.convert(rs, OwnedVoucherResponse.class)) .collect(Collectors.toList()); - ObjectMapper objectMapper = new ObjectMapper(); - try { - return objectMapper.writeValueAsString(responses); - } catch (IOException e) { - throw new RuntimeException(e); - } + + model.addAttribute("responses", responses); + model.addAttribute("customerId", request.getCustomerId()); // Add customer ID to the model + + return "customer/owned-vouchers-list"; } - public void deleteWallet(WalletDeleteRequest request) { + @PostMapping("/wallet/delete") + public String deleteWallet(@ModelAttribute WalletDeleteRequest request) { WalletDeleteParam param = converterManager.convert(request, WalletDeleteParam.class); service.deleteWallet(param); + + return "redirect:/customers/owned-vouchers"; } - public void registerToWallet(WalletRegisterRequest request) { + @PostMapping("/wallet/register") + public String registerToWallet(@ModelAttribute WalletRegisterRequest request) { WalletRegisterParam param = converterManager.convert(request, WalletRegisterParam.class); service.registerToWallet(param); + + return "redirect:/customers/owned-vouchers"; // redirect to the owned vouchers page after registration } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/request/CustomerCreateRequest.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/request/CustomerCreateRequest.java index 5590eeb9c3..5ba3b41ca5 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/request/CustomerCreateRequest.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/request/CustomerCreateRequest.java @@ -2,8 +2,11 @@ public class CustomerCreateRequest { - private final String email; - private final String nickname; + private String email; + private String nickname; + + public CustomerCreateRequest() { + } public CustomerCreateRequest(String email, String nickname) { this.email = email; @@ -14,7 +17,15 @@ public String getEmail() { return email; } + public void setEmail(String email) { + this.email = email; + } + public String getNickname() { return nickname; } + + public void setNickname(String nickname) { + this.nickname = nickname; + } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/request/OwnedVouchersRequest.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/request/OwnedVouchersRequest.java index 59ab9c3a78..e8c6ae421c 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/request/OwnedVouchersRequest.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/request/OwnedVouchersRequest.java @@ -2,7 +2,10 @@ public class OwnedVouchersRequest { - private final String customerId; + private String customerId; + + public OwnedVouchersRequest() { + } public OwnedVouchersRequest(String customerId) { this.customerId = customerId; @@ -11,4 +14,8 @@ public OwnedVouchersRequest(String customerId) { public String getCustomerId() { return customerId; } + + public void setCustomerId(String customerId) { + this.customerId = customerId; + } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/request/WalletDeleteRequest.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/request/WalletDeleteRequest.java index 48a724d247..56533b2147 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/request/WalletDeleteRequest.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/request/WalletDeleteRequest.java @@ -2,8 +2,11 @@ public class WalletDeleteRequest { - private final String voucherId; - private final String customerId; + private String voucherId; + private String customerId; + + public WalletDeleteRequest() { + } public WalletDeleteRequest(String voucherId, String customerId) { this.voucherId = voucherId; @@ -14,7 +17,15 @@ public String getVoucherId() { return voucherId; } + public void setVoucherId(String voucherId) { + this.voucherId = voucherId; + } + public String getCustomerId() { return customerId; } + + public void setCustomerId(String customerId) { + this.customerId = customerId; + } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/request/WalletRegisterRequest.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/request/WalletRegisterRequest.java index ef7090509f..00ccaaf3f9 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/request/WalletRegisterRequest.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/request/WalletRegisterRequest.java @@ -2,8 +2,11 @@ public class WalletRegisterRequest { - private final String voucherId; - private final String customerId; + private String voucherId; + private String customerId; + + public WalletRegisterRequest() { + } public WalletRegisterRequest(String voucherId, String customerId) { this.voucherId = voucherId; @@ -14,7 +17,15 @@ public String getVoucherId() { return voucherId; } + public void setVoucherId(String voucherId) { + this.voucherId = voucherId; + } + public String getCustomerId() { return customerId; } + + public void setCustomerId(String customerId) { + this.customerId = customerId; + } } diff --git a/voucher-manager/src/main/resources/logback.xml b/voucher-manager/src/main/resources/logback.xml index e3415d0269..9f099ee190 100644 --- a/voucher-manager/src/main/resources/logback.xml +++ b/voucher-manager/src/main/resources/logback.xml @@ -8,7 +8,7 @@ - + diff --git a/voucher-manager/src/main/resources/templates/customer/create-form.html b/voucher-manager/src/main/resources/templates/customer/create-form.html new file mode 100644 index 0000000000..d8b77428e1 --- /dev/null +++ b/voucher-manager/src/main/resources/templates/customer/create-form.html @@ -0,0 +1,17 @@ + + + + Create Customer + + +

Create New Customer

+ +
+
+
+
+
+ +
+ + diff --git a/voucher-manager/src/main/resources/templates/customer/list.html b/voucher-manager/src/main/resources/templates/customer/list.html new file mode 100644 index 0000000000..92f76243ae --- /dev/null +++ b/voucher-manager/src/main/resources/templates/customer/list.html @@ -0,0 +1,27 @@ + + + + Customer List + + +

Customer List

+ +Create New Customer +Get Owned Vouchers + + + + + + + + + + + + + + +
EmailNickname
+ + diff --git a/voucher-manager/src/main/resources/templates/customer/owned-vouchers-form.html b/voucher-manager/src/main/resources/templates/customer/owned-vouchers-form.html new file mode 100644 index 0000000000..e4cef78016 --- /dev/null +++ b/voucher-manager/src/main/resources/templates/customer/owned-vouchers-form.html @@ -0,0 +1,15 @@ + + + + Get Owned Vouchers + + +

Get Owned Vouchers by Customer

+ +
+
+
+ +
+ + diff --git a/voucher-manager/src/main/resources/templates/customer/owned-vouchers-list.html b/voucher-manager/src/main/resources/templates/customer/owned-vouchers-list.html new file mode 100644 index 0000000000..e1e376de08 --- /dev/null +++ b/voucher-manager/src/main/resources/templates/customer/owned-vouchers-list.html @@ -0,0 +1,39 @@ + + + + Owned Vouchers + + +

Owned Vouchers

+ + + + + + + + + + + + + +
Voucher IdAction
+
+ + + +
+
+ +

Register a New Voucher

+
+
+
+ + +
+ +Get Customers List + + From e74675b97f119a6d3b745a229d255252afe41065 Mon Sep 17 00:00:00 2001 From: wonu606 Date: Tue, 25 Jul 2023 02:44:39 +0900 Subject: [PATCH 31/37] =?UTF-8?q?feat(Controller):=20Voucher=20ViewControl?= =?UTF-8?q?ler=20&=20RestController=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../customer/CustomerController.java | 12 ++- ...oller.java => CustomerRestController.java} | 7 +- .../VoucherWalletController.java | 80 +++++++++++-------- .../VoucherWalletRestController.java | 74 +++++++++++++++++ .../converter/VoucherResponseConverter.java | 3 +- .../reqeust/OwnedCustomersRequest.java | 9 ++- .../reqeust/VoucherCreateRequest.java | 15 +++- .../reqeust/WalletAssignRequest.java | 9 ++- .../response/VoucherResponse.java | 22 +++-- ....java => VoucherInsertQueryConverter.java} | 2 +- .../VoucherServiceConverterManager.java | 2 +- .../vouchermanager/util/TypedConverter.java | 3 +- .../{customer => customers}/create-form.html | 0 .../{customer => customers}/list.html | 0 .../owned-vouchers-form.html | 0 .../owned-vouchers-list.html | 0 .../vouchers/assign-wallet-form.html | 19 +++++ .../templates/vouchers/create-form.html | 26 ++++++ .../resources/templates/vouchers/list.html | 34 ++++++++ .../vouchers/owned-customers-form.html | 19 +++++ .../vouchers/owned-customers-list.html | 27 +++++++ 21 files changed, 307 insertions(+), 56 deletions(-) rename voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/{CustomerApiController.java => CustomerRestController.java} (94%) create mode 100644 voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/VoucherWalletRestController.java rename voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/converter/{VoucherCreateQueryConverter.java => VoucherInsertQueryConverter.java} (91%) rename voucher-manager/src/main/resources/templates/{customer => customers}/create-form.html (100%) rename voucher-manager/src/main/resources/templates/{customer => customers}/list.html (100%) rename voucher-manager/src/main/resources/templates/{customer => customers}/owned-vouchers-form.html (100%) rename voucher-manager/src/main/resources/templates/{customer => customers}/owned-vouchers-list.html (100%) create mode 100644 voucher-manager/src/main/resources/templates/vouchers/assign-wallet-form.html create mode 100644 voucher-manager/src/main/resources/templates/vouchers/create-form.html create mode 100644 voucher-manager/src/main/resources/templates/vouchers/list.html create mode 100644 voucher-manager/src/main/resources/templates/vouchers/owned-customers-form.html create mode 100644 voucher-manager/src/main/resources/templates/vouchers/owned-customers-list.html diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/CustomerController.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/CustomerController.java index 7a53efde12..3c5d3d8c44 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/CustomerController.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/CustomerController.java @@ -22,7 +22,6 @@ import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.servlet.mvc.support.RedirectAttributes; @Controller @RequestMapping("/customers") @@ -38,12 +37,11 @@ public CustomerController(CustomerService service) { @GetMapping("/create") public String createCustomerForm() { - return "customer/create-form"; + return "customers/create-form"; } @PostMapping("/create") - public String createCustomer(@ModelAttribute CustomerCreateRequest request, - RedirectAttributes redirectAttributes) { + public String createCustomer(@ModelAttribute CustomerCreateRequest request) { CustomerCreateParam param = converterManager.convert(request, CustomerCreateParam.class); service.createCustomer(param); @@ -59,12 +57,12 @@ public String getCustomerList(Model model) { .collect(Collectors.toList()); model.addAttribute("responses", responses); - return "customer/list"; // returns the Thymeleaf view name + return "customers/list"; } @GetMapping("/owned-vouchers") public String getOwnedVouchersByCustomerForm() { - return "customer/owned-vouchers-form"; + return "customers/owned-vouchers-form"; } @PostMapping("/owned-vouchers") @@ -80,7 +78,7 @@ public String getOwnedVouchersByCustomer(@ModelAttribute OwnedVouchersRequest re model.addAttribute("responses", responses); model.addAttribute("customerId", request.getCustomerId()); // Add customer ID to the model - return "customer/owned-vouchers-list"; + return "/customers/owned-vouchers-list"; } @PostMapping("/wallet/delete") diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/CustomerApiController.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/CustomerRestController.java similarity index 94% rename from voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/CustomerApiController.java rename to voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/CustomerRestController.java index 246340ce06..16e6cdb19e 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/CustomerApiController.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/CustomerRestController.java @@ -19,6 +19,7 @@ import java.util.List; import java.util.stream.Collectors; import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; @@ -27,13 +28,13 @@ import org.springframework.web.bind.annotation.RestController; @RestController -@RequestMapping("/api/customers") -public class CustomerApiController { +@RequestMapping(value = "/api/customers", produces = MediaType.APPLICATION_JSON_VALUE) +public class CustomerRestController { private final CustomerService service; private final CustomerControllerConverterManager converterManager; - public CustomerApiController(CustomerService service) { + public CustomerRestController(CustomerService service) { this.service = service; converterManager = new CustomerControllerConverterManager(); } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/VoucherWalletController.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/VoucherWalletController.java index 2786eaf591..4c57ab4ffc 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/VoucherWalletController.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/VoucherWalletController.java @@ -6,11 +6,8 @@ import com.wonu606.vouchermanager.controller.voucherwallet.reqeust.VoucherCreateRequest; import com.wonu606.vouchermanager.controller.voucherwallet.reqeust.WalletAssignRequest; import com.wonu606.vouchermanager.controller.voucherwallet.response.OwnedCustomerResponse; -import com.wonu606.vouchermanager.controller.voucherwallet.response.VoucherCreateResponse; import com.wonu606.vouchermanager.controller.voucherwallet.response.VoucherResponse; -import com.wonu606.vouchermanager.service.voucher.VoucherService; import com.wonu606.vouchermanager.service.voucher.param.VoucherCreateParam; -import com.wonu606.vouchermanager.service.voucher.result.VoucherCreateResult; import com.wonu606.vouchermanager.service.voucher.result.VoucherResult; import com.wonu606.vouchermanager.service.voucherwallet.VoucherWalletService; import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedCustomersParam; @@ -19,9 +16,16 @@ import java.io.IOException; import java.util.List; import java.util.stream.Collectors; -import org.springframework.stereotype.Component; +import org.springframework.boot.Banner.Mode; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; -@Component +@Controller +@RequestMapping("vouchers") public class VoucherWalletController { private final VoucherWalletService service; @@ -32,51 +36,61 @@ public VoucherWalletController(VoucherWalletService service) { converterManager = new VoucherWalletControllerConverterManager(); } - public String createVoucher(VoucherCreateRequest request) { + @GetMapping("/create") + public String createVoucherForm(Model model) { + model.addAttribute("voucherCreateRequest", new VoucherCreateRequest("", 0.0)); + return "/vouchers/create-form"; + } + + @PostMapping("/create") + public String createVoucher(@ModelAttribute VoucherCreateRequest request) { VoucherCreateParam param = converterManager.convert(request, VoucherCreateParam.class); - VoucherCreateResult result = service.createVoucher(param); + service.createVoucher(param); - VoucherCreateResponse response = converterManager.convert(result, - VoucherCreateResponse.class); - ObjectMapper objectMapper = new ObjectMapper(); - try { - return objectMapper.writeValueAsString(response); - } catch (IOException e) { - throw new RuntimeException(e); - } + return "redirect:/vouchers/list"; } - public String getVoucherList() { + + @GetMapping("/list") + public String getVoucherList(Model model) { List results = service.getVoucherList(); - List responses = results.stream() + List voucherList = results.stream() .map(rs -> converterManager.convert(rs, VoucherResponse.class)) .collect(Collectors.toList()); - ObjectMapper objectMapper = new ObjectMapper(); - try { - return objectMapper.writeValueAsString(responses); - } catch (IOException e) { - throw new RuntimeException(e); - } + model.addAttribute("voucherList", voucherList); + return "vouchers/list"; } - public String getOwnedCustomersByVoucher(OwnedCustomersRequest request) { + @GetMapping("/owned-customers") + public String ownedCustomersList(Model model) { + model.addAttribute("ownedCustomersRequest", new OwnedCustomersRequest()); + return "vouchers/owned-customers-form"; + } + + @PostMapping("/owned-customers") + public String getOwnedCustomersByVoucher(@ModelAttribute OwnedCustomersRequest request, + Model model) { OwnedCustomersParam param = converterManager.convert(request, OwnedCustomersParam.class); List results = service.findOwnedCustomersByVoucher(param); - List responses = results.stream() + List ownedCustomerResponses = results.stream() .map(rs -> converterManager.convert(rs, OwnedCustomerResponse.class)) .collect(Collectors.toList()); - ObjectMapper objectMapper = new ObjectMapper(); - try { - return objectMapper.writeValueAsString(responses); - } catch (IOException e) { - throw new RuntimeException(e); - } + model.addAttribute("ownedCustomerResponses", ownedCustomerResponses); + return "/vouchers/owned-customers-list"; + } + + @GetMapping("/assign-wallet") + public String assignWallet(Model model) { + model.addAttribute("walletAssignRequest", new WalletAssignRequest()); + return "/vouchers/assign-wallet-form"; } - public void assignWallet(WalletAssignRequest request) { - WalletAssignParam param = converterManager.convert(request, WalletAssignParam.class); + @PostMapping("/assign-wallet") + public String assignWallet(@ModelAttribute WalletAssignRequest walletAssignRequest) { + WalletAssignParam param = converterManager.convert(walletAssignRequest, WalletAssignParam.class); service.assignWallet(param); + return "redirect:/vouchers/list"; } } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/VoucherWalletRestController.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/VoucherWalletRestController.java new file mode 100644 index 0000000000..e06a6f6aee --- /dev/null +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/VoucherWalletRestController.java @@ -0,0 +1,74 @@ +package com.wonu606.vouchermanager.controller.voucherwallet; + +import com.wonu606.vouchermanager.controller.voucherwallet.converter.VoucherWalletControllerConverterManager; +import com.wonu606.vouchermanager.controller.voucherwallet.reqeust.OwnedCustomersRequest; +import com.wonu606.vouchermanager.controller.voucherwallet.reqeust.VoucherCreateRequest; +import com.wonu606.vouchermanager.controller.voucherwallet.reqeust.WalletAssignRequest; +import com.wonu606.vouchermanager.controller.voucherwallet.response.OwnedCustomerResponse; +import com.wonu606.vouchermanager.controller.voucherwallet.response.VoucherResponse; +import com.wonu606.vouchermanager.service.voucher.param.VoucherCreateParam; +import com.wonu606.vouchermanager.service.voucher.result.VoucherResult; +import com.wonu606.vouchermanager.service.voucherwallet.VoucherWalletService; +import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedCustomersParam; +import com.wonu606.vouchermanager.service.voucherwallet.param.WalletAssignParam; +import com.wonu606.vouchermanager.service.voucherwallet.result.OwnedCustomerResult; +import java.util.List; +import java.util.stream.Collectors; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping(value = "/api/vouchers", produces = MediaType.APPLICATION_JSON_VALUE) +public class VoucherWalletRestController { + + private final VoucherWalletService service; + private final VoucherWalletControllerConverterManager converterManager; + + public VoucherWalletRestController(VoucherWalletService service) { + this.service = service; + converterManager = new VoucherWalletControllerConverterManager(); + } + + @PostMapping("/create") + public ResponseEntity createVoucher(@RequestBody VoucherCreateRequest request) { + VoucherCreateParam param = converterManager.convert(request, VoucherCreateParam.class); + service.createVoucher(param); + return new ResponseEntity<>(HttpStatus.CREATED); + } + + @GetMapping("/list") + public ResponseEntity> getVoucherList() { + List results = service.getVoucherList(); + + List voucherResponses = results.stream() + .map(rs -> converterManager.convert(rs, VoucherResponse.class)) + .collect(Collectors.toList()); + + return new ResponseEntity<>(voucherResponses, HttpStatus.OK); + } + + @PostMapping("/owned-customers") + public ResponseEntity> getOwnedCustomersByVoucher(@RequestBody OwnedCustomersRequest request) { + OwnedCustomersParam param = converterManager.convert(request, OwnedCustomersParam.class); + List results = service.findOwnedCustomersByVoucher(param); + + List ownedCustomerResponses = results.stream() + .map(rs -> converterManager.convert(rs, OwnedCustomerResponse.class)) + .collect(Collectors.toList()); + + return new ResponseEntity<>(ownedCustomerResponses, HttpStatus.OK); + } + + @PostMapping("/assign-wallet") + public ResponseEntity assignWallet(@RequestBody WalletAssignRequest walletAssignRequest) { + WalletAssignParam param = converterManager.convert(walletAssignRequest, WalletAssignParam.class); + service.assignWallet(param); + return new ResponseEntity<>(HttpStatus.OK); + } +} diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/converter/VoucherResponseConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/converter/VoucherResponseConverter.java index 43fdea486a..af854e3542 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/converter/VoucherResponseConverter.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/converter/VoucherResponseConverter.java @@ -8,7 +8,8 @@ public class VoucherResponseConverter implements TypedConverter { +public class VoucherInsertQueryConverter implements TypedConverter { @Override public VoucherInsertQuery convert(Voucher voucher) { diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/converter/VoucherServiceConverterManager.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/converter/VoucherServiceConverterManager.java index 3d9171bbc3..003b7a5bff 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/converter/VoucherServiceConverterManager.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucher/converter/VoucherServiceConverterManager.java @@ -12,7 +12,7 @@ public class VoucherServiceConverterManager { public VoucherServiceConverterManager() { converterList = new ArrayList<>(); - converterList.add(new VoucherCreateQueryConverter()); + converterList.add(new VoucherInsertQueryConverter()); converterList.add(new VoucherCreateResultConverter()); converterList.add(new VoucherResultConverter()); } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/util/TypedConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/util/TypedConverter.java index 0f6f85da5e..b12c799034 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/util/TypedConverter.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/util/TypedConverter.java @@ -7,6 +7,7 @@ public interface TypedConverter extends Converter { Class getTargetType(); default boolean canConvert(Class sourceType, Class targetType) { - return getSourceType() == sourceType && getTargetType() == targetType; + return getSourceType().isAssignableFrom(sourceType) + && getTargetType().isAssignableFrom(targetType); } } diff --git a/voucher-manager/src/main/resources/templates/customer/create-form.html b/voucher-manager/src/main/resources/templates/customers/create-form.html similarity index 100% rename from voucher-manager/src/main/resources/templates/customer/create-form.html rename to voucher-manager/src/main/resources/templates/customers/create-form.html diff --git a/voucher-manager/src/main/resources/templates/customer/list.html b/voucher-manager/src/main/resources/templates/customers/list.html similarity index 100% rename from voucher-manager/src/main/resources/templates/customer/list.html rename to voucher-manager/src/main/resources/templates/customers/list.html diff --git a/voucher-manager/src/main/resources/templates/customer/owned-vouchers-form.html b/voucher-manager/src/main/resources/templates/customers/owned-vouchers-form.html similarity index 100% rename from voucher-manager/src/main/resources/templates/customer/owned-vouchers-form.html rename to voucher-manager/src/main/resources/templates/customers/owned-vouchers-form.html diff --git a/voucher-manager/src/main/resources/templates/customer/owned-vouchers-list.html b/voucher-manager/src/main/resources/templates/customers/owned-vouchers-list.html similarity index 100% rename from voucher-manager/src/main/resources/templates/customer/owned-vouchers-list.html rename to voucher-manager/src/main/resources/templates/customers/owned-vouchers-list.html diff --git a/voucher-manager/src/main/resources/templates/vouchers/assign-wallet-form.html b/voucher-manager/src/main/resources/templates/vouchers/assign-wallet-form.html new file mode 100644 index 0000000000..4787e86079 --- /dev/null +++ b/voucher-manager/src/main/resources/templates/vouchers/assign-wallet-form.html @@ -0,0 +1,19 @@ + + + + Find Owned Customers by Voucher + + + +
+

Assign Wallet

+
+
+ + +
+ +
+
+ + diff --git a/voucher-manager/src/main/resources/templates/vouchers/create-form.html b/voucher-manager/src/main/resources/templates/vouchers/create-form.html new file mode 100644 index 0000000000..3b679e5b08 --- /dev/null +++ b/voucher-manager/src/main/resources/templates/vouchers/create-form.html @@ -0,0 +1,26 @@ + + + + Create Voucher + + + +
+

Create Voucher

+
+
+ + +
+
+ + +
+ +
+
+ + diff --git a/voucher-manager/src/main/resources/templates/vouchers/list.html b/voucher-manager/src/main/resources/templates/vouchers/list.html new file mode 100644 index 0000000000..8d4557c1ee --- /dev/null +++ b/voucher-manager/src/main/resources/templates/vouchers/list.html @@ -0,0 +1,34 @@ + + + + Vouchers + + + +
+

Vouchers

+ + + + + + + + + + + + + + + + +
IDTypeValue
+
+ + diff --git a/voucher-manager/src/main/resources/templates/vouchers/owned-customers-form.html b/voucher-manager/src/main/resources/templates/vouchers/owned-customers-form.html new file mode 100644 index 0000000000..1e5f82ed29 --- /dev/null +++ b/voucher-manager/src/main/resources/templates/vouchers/owned-customers-form.html @@ -0,0 +1,19 @@ + + + + Find Owned Customers by Voucher + + + +
+

Find Customers who Own a Specific Voucher

+
+
+ + +
+ +
+
+ + diff --git a/voucher-manager/src/main/resources/templates/vouchers/owned-customers-list.html b/voucher-manager/src/main/resources/templates/vouchers/owned-customers-list.html new file mode 100644 index 0000000000..0b5540f1d1 --- /dev/null +++ b/voucher-manager/src/main/resources/templates/vouchers/owned-customers-list.html @@ -0,0 +1,27 @@ + + + + Owned Customers + + + +
+

Owned Customers

+ + + + + + + + + + + +
Email Address
+ +
+ + From 0ba3a9443ee8f7deac6029b0654e4ee9393d104e Mon Sep 17 00:00:00 2001 From: wonu606 Date: Tue, 25 Jul 2023 16:40:20 +0900 Subject: [PATCH 32/37] =?UTF-8?q?test:=20Repository=20=ED=85=8C=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=20=EC=BD=94=EB=93=9C=20=EA=B5=AC=ED=98=84=20=EB=B0=8F?= =?UTF-8?q?=20=ED=86=B5=EA=B3=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../VoucherWalletJdbcRepository.java | 5 - .../VoucherWalletRepository.java | 2 - .../store/VoucherWalletJdbcStore.java | 9 - .../store/VoucherWalletStore.java | 2 - .../customer/CustomerJdbcRepositoryTest.java | 79 +++--- .../voucher/VoucherJdbcRepositoryTest.java | 261 ++++++++---------- .../VoucherWalletJdbcRepositoryTest.java | 191 ++++++++----- voucher-manager/src/test/resources/schema.sql | 6 +- 8 files changed, 272 insertions(+), 283 deletions(-) diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/VoucherWalletJdbcRepository.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/VoucherWalletJdbcRepository.java index 3b01eb1fc1..b74b049452 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/VoucherWalletJdbcRepository.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/VoucherWalletJdbcRepository.java @@ -47,11 +47,6 @@ public List findOwnedCustomersByVoucher(OwnedCustomersQu return reader.findOwnedCustomersByVoucher(query); } - @Override - public WalletUpdateResultSet update(WalletUpdateQuery query) { - return store.update(query); - } - @Override public void register(WalletRegisterQuery query) { store.register(query); diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/VoucherWalletRepository.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/VoucherWalletRepository.java index 3193dad151..e801fa9d12 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/VoucherWalletRepository.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/VoucherWalletRepository.java @@ -22,7 +22,5 @@ public interface VoucherWalletRepository { WalletInsertResultSet insert(WalletInsertQuery wallet); - WalletUpdateResultSet update(WalletUpdateQuery wallet); - void register(WalletRegisterQuery query); } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/store/VoucherWalletJdbcStore.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/store/VoucherWalletJdbcStore.java index 47c47a0c0a..ce432ddbf1 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/store/VoucherWalletJdbcStore.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/store/VoucherWalletJdbcStore.java @@ -39,15 +39,6 @@ public WalletInsertResultSet insert(WalletInsertQuery query) { return new WalletInsertResultSet(resultSet); } - public WalletUpdateResultSet update(WalletUpdateQuery query) { - String insertSql = "INSERT INTO voucher_wallet (customer_id, voucher_id) VALUES (:customer_id, :voucher_id)"; - Map params = new HashMap<>(); - params.put("customer_id", query.getCustomerId()); - params.put("voucher_id", query.getVoucherId()); - - return new WalletUpdateResultSet(jdbcTemplate.update(insertSql, params)); - } - @Override public void register(WalletRegisterQuery query) { String updateQuery = "UPDATE voucher_wallet SET customer_id = :customer_id WHERE voucher_id = :voucher_id AND customer_id IS NULL LIMIT 1"; diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/store/VoucherWalletStore.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/store/VoucherWalletStore.java index aa2988150a..493bde0122 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/store/VoucherWalletStore.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/store/VoucherWalletStore.java @@ -13,7 +13,5 @@ public interface VoucherWalletStore { WalletInsertResultSet insert(WalletInsertQuery wallet); - WalletUpdateResultSet update(WalletUpdateQuery wallet); - void register(WalletRegisterQuery query); } diff --git a/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/customer/CustomerJdbcRepositoryTest.java b/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/customer/CustomerJdbcRepositoryTest.java index 063a1cfe4b..b01fe5f18e 100644 --- a/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/customer/CustomerJdbcRepositoryTest.java +++ b/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/customer/CustomerJdbcRepositoryTest.java @@ -8,22 +8,29 @@ import com.wonu606.vouchermanager.repository.customer.reader.CustomerJdbcReader; import com.wonu606.vouchermanager.repository.customer.reader.CustomerReader; import com.wonu606.vouchermanager.repository.customer.reader.rowmapper.CustomerReaderRowMapperManager; +import com.wonu606.vouchermanager.repository.customer.resultset.CustomerCreateResultSet; import com.wonu606.vouchermanager.repository.customer.resultset.CustomerResultSet; import com.wonu606.vouchermanager.repository.customer.store.CustomerJdbcStore; import com.wonu606.vouchermanager.repository.customer.store.CustomerStore; +import com.wonu606.vouchermanager.repository.voucher.query.VoucherInsertQuery; import java.util.List; +import java.util.stream.Stream; +import org.assertj.core.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.jdbc.JdbcTest; import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; @JdbcTest -@DisplayName("JdbcCustomerResultSetRepository 테스트") +@DisplayName("CustomerResultSetJdbcRepository 테스트") class CustomerJdbcRepositoryTest { - private CustomerJdbcRepository repository; + private CustomerRepository repository; @Autowired private NamedParameterJdbcTemplate namedParameterJdbcTemplate; @@ -36,67 +43,55 @@ void setUp() { repository = new CustomerJdbcRepository(reader, store); } - @Test - @DisplayName("save_저장되어 있지 않은 Customer면이라면_Customer가 저장된다.") - void save_UnsavedCustomer_CustomerSaved() { + @ParameterizedTest + @MethodSource("givenCustomerCreateQuery") + @DisplayName("insert_새 Customer이면_저장된다.") + void insert_NewCustomer_ReturnInsertedCustomer(CustomerCreateQuery query) { // given - Customer customer = new Customer( - new Email("Linlin@onepiece.org"), "Big Mom"); - - Email email = new Email(customer.getEmailAddress()); + CustomerCreateResultSet expected = new CustomerCreateResultSet(1); // when - repository.insert( - new CustomerCreateQuery(customer.getEmailAddress(), customer.getNickname())); - List actualAllList = repository.findAll(); + CustomerCreateResultSet actual = repository.insert( + new CustomerCreateQuery(query.getEmail(), query.getNickname())); // then - assertThat(actualAllList).isNotNull(); - assertThat(actualAllList).hasSize(1); - assertThat(actualAllList.get(0).getEmail()).isEqualTo(customer.getEmailAddress()); - assertThat(actualAllList.get(0).getNickname()).isEqualTo(customer.getNickname()); + assertThat(actual.getTaskSuccess()).isEqualTo(expected.getTaskSuccess()); } - @Test - @DisplayName("findAll_저장된 모든 Customer_저장된 모든 Customer들을 반환한다.") - void findAll_SavedCustomers_ReturnsAllCustomers() { + @ParameterizedTest + @MethodSource("givenCustomerCreateQuery") + @DisplayName("findAll_조건 없음_저장된 모든 Customer들을 반환한다.") + void findAll_NoConditions_ReturnAllCustomers(CustomerCreateQuery query) { // given - Customer customer1 = new Customer( - new Email("Linlin@onepiece.org"), "Big Mom"); - Customer customer2 = new Customer( - new Email("loopy@onepiece.org"), "Pirate King"); - repository.insert( - new CustomerCreateQuery(customer1.getEmailAddress(), customer1.getNickname())); - repository.insert( - new CustomerCreateQuery(customer2.getEmailAddress(), customer2.getNickname())); + repository.insert(query); + CustomerResultSet expectedResultSet = new CustomerResultSet(query.getEmail(), + query.getNickname()); // when List allCustomers = repository.findAll(); // then - assertThat(allCustomers).hasSize(2); - assertThat(allCustomers).extracting("email") - .contains(customer1.getEmailAddress(), customer2.getEmailAddress()); - assertThat(allCustomers).extracting("nickname") - .contains(customer1.getNickname(), customer2.getNickname()); + assertThat(allCustomers).hasSize(1); + assertThat(allCustomers).usingRecursiveComparison().isEqualTo(List.of(expectedResultSet)); } - @Test - @DisplayName("deleteByCustomerId_저장된 Customer_Customer를 제거한다.") - void deleteByCustomerId_SavedCustomer_CustomerDeleted() { + @ParameterizedTest + @MethodSource("givenCustomerCreateQuery") + @DisplayName("deleteByCustomerId_존재하는 Customer이면_Customer를 제거한다.") + void deleteByCustomerId_ExistingCustomer_CustomerIsDeleted(CustomerCreateQuery query) { // given - Customer customer = new Customer( - new Email("Linlin@onepiece.org"), "Big Mom"); - repository.insert( - new CustomerCreateQuery(customer.getEmailAddress(), customer.getNickname())); - - Email email = new Email(customer.getEmailAddress()); + repository.insert(query); // then - repository.deleteByCustomerId(customer.getEmailAddress()); + repository.deleteByCustomerId(query.getEmail()); List actualAllList = repository.findAll(); // when assertThat(actualAllList).hasSize(0); } + + static Stream givenCustomerCreateQuery() { + CustomerCreateQuery query = new CustomerCreateQuery("Linlin@onepiece.org", "Big Mom"); + return Stream.of(Arguments.of(query)); + } } diff --git a/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucher/VoucherJdbcRepositoryTest.java b/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucher/VoucherJdbcRepositoryTest.java index 389b63d9ca..21b7b7d5d8 100644 --- a/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucher/VoucherJdbcRepositoryTest.java +++ b/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucher/VoucherJdbcRepositoryTest.java @@ -1,144 +1,117 @@ -//package com.wonu606.vouchermanager.repository.voucher; -// -//import static org.assertj.core.api.Assertions.assertThat; -// -//import com.wonu606.vouchermanager.domain.voucher.FixedAmountVoucher; -//import com.wonu606.vouchermanager.domain.voucher.PercentageVoucher; -//import com.wonu606.vouchermanager.domain.voucher.Voucher; -//import com.wonu606.vouchermanager.repository.voucher.reader.VoucherJdbcReader; -//import com.wonu606.vouchermanager.repository.voucher.reader.rowmapper.VoucherReaderRowMapperManager; -//import com.wonu606.vouchermanager.repository.voucher.resultset.VoucherCreateResultSet; -//import com.wonu606.vouchermanager.domain.voucher.discountvalue.FixedAmountValue; -//import com.wonu606.vouchermanager.domain.voucher.discountvalue.PercentageDiscountValue; -//import com.wonu606.vouchermanager.repository.voucher.store.VoucherJdbcStore; -//import java.util.List; -//import java.util.Optional; -//import java.util.UUID; -//import javax.sql.DataSource; -//import org.junit.jupiter.api.BeforeEach; -//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.jdbc.JdbcTest; -//import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; -// -//@JdbcTest -//@DisplayName("JdbcVoucherResultSetRepository 테스트") -//class VoucherJdbcRepositoryTest { -// -// private VoucherJdbcRepository voucherJdbcRepository; -// -// @Autowired -// private NamedParameterJdbcTemplate namedParameterJdbcTemplate; -// -// @BeforeEach -// void setUp() { -// VoucherJdbcReader reader = new VoucherJdbcReader(namedParameterJdbcTemplate, new VoucherReaderRowMapperManager()); -// VoucherJdbcStore store = new VoucherJdbcStore(namedParameterJdbcTemplate); -// voucherJdbcRepository = new VoucherJdbcRepository(reader, store); -// } -// -// @Test -// @DisplayName("저장 시_저장되어 있지 않은 Voucher라면_Voucher가 저장된다.") -// void save_UnsavedVoucher_VoucherSaved() { -// // given -// Voucher voucher = new FixedAmountVoucher( -// UUID.randomUUID(), new FixedAmountValue(50.0)); -// -// // when -// voucherJdbcRepository.save(voucher); -// var result = voucherJdbcRepository.findById(voucher.getUuid()); -// -// // then -// assertThat(result).isPresent(); -// assertThat(result.get().getUuid()).isEqualTo(voucher.getUuid()); -// assertThat(result.get().getSimpleName()).isEqualTo(voucher.getClass().getSimpleName()); -// assertThat(result.get().getDiscountValue()).isEqualTo(voucher.getDiscountValue()); -// } -// -// @Test -// @DisplayName("findById_저장된 Voucher라면_해당 Voucher를 반환한다.") -// void findById_savedVoucher_ReturnsVoucher() { -// // given -// Voucher voucher = new FixedAmountVoucher( -// UUID.randomUUID(), new FixedAmountValue(50.0)); -// voucherJdbcRepository.save(voucher); -// -// // when -// Optional foundVoucher = voucherJdbcRepository.findById( -// voucher.getUuid()); -// -// // then -// assertThat(foundVoucher).isPresent(); -// assertThat(foundVoucher.get().getUuid()).isEqualTo(voucher.getUuid()); -// } -// -// @Test -// @DisplayName("findById_저장되지 않은 Voucher_Empty를 반환한다.") -// void findById_UnsavedVoucher_ReturnsEmpty() { -// // given -// UUID nonExistentId = UUID.randomUUID(); -// -// // when -// Optional foundVoucher = voucherJdbcRepository.findById( -// nonExistentId); -// -// // then -// assertThat(foundVoucher).isNotPresent(); -// } -// -// @Test -// @DisplayName("findAll_저장된 Vouchers_저장된 모든 Vouchers들을 반환한다.") -// void findAll_SavedVouchers_ReturnsAllVouchers() { -// // given -// Voucher voucher1 = new FixedAmountVoucher( -// UUID.randomUUID(), new FixedAmountValue(50.0)); -// Voucher voucher2 = new PercentageVoucher( -// UUID.randomUUID(), new PercentageDiscountValue(30.0)); -// voucherJdbcRepository.save(voucher1); -// voucherJdbcRepository.save(voucher2); -// -// // when -// List allVouchers = voucherJdbcRepository.findAll(); -// -// // then -// assertThat(allVouchers).hasSize(2); -// assertThat(allVouchers).extracting("uuid").contains(voucher1.getUuid(), voucher2.getUuid()); -// } -// -// @Test -// @DisplayName("deleteById_저장된 Vocuher_Voucher를 제거한다.") -// void deleteById_SavedVoucher_VoucherDeleted() { -// // given -// Voucher voucher = new FixedAmountVoucher( -// UUID.randomUUID(), new FixedAmountValue(50.0)); -// voucherJdbcRepository.save(voucher); -// -// // then -// voucherJdbcRepository.deleteById(voucher.getUuid()); -// Optional foundVoucher = voucherJdbcRepository.findById( -// voucher.getUuid()); -// -// // when -// assertThat(foundVoucher).isNotPresent(); -// } -// -// @Test -// @DisplayName("deleteAll_저장된 모든 Voucher_모든 Voucher를 제거한다.") -// void deleteAll_SavedMultipleVouchers_AllVouchersDeleted() { -// // given -// Voucher voucher1 = new FixedAmountVoucher( -// UUID.randomUUID(), new FixedAmountValue(50.0)); -// Voucher voucher2 = new PercentageVoucher( -// UUID.randomUUID(), new PercentageDiscountValue(30.0)); -// voucherJdbcRepository.save(voucher1); -// voucherJdbcRepository.save(voucher2); -// -// // then -// voucherJdbcRepository.deleteAll(); -// List allVouchers = voucherJdbcRepository.findAll(); -// -// // when -// assertThat(allVouchers).isEmpty(); -// } -//} +package com.wonu606.vouchermanager.repository.voucher; + +import static org.assertj.core.api.Assertions.assertThat; + +import com.wonu606.vouchermanager.repository.voucher.query.VoucherDeleteQuery; +import com.wonu606.vouchermanager.repository.voucher.query.VoucherFindQuery; +import com.wonu606.vouchermanager.repository.voucher.query.VoucherInsertQuery; +import com.wonu606.vouchermanager.repository.voucher.reader.VoucherJdbcReader; +import com.wonu606.vouchermanager.repository.voucher.reader.VoucherReader; +import com.wonu606.vouchermanager.repository.voucher.reader.rowmapper.VoucherReaderRowMapperManager; +import com.wonu606.vouchermanager.repository.voucher.resultset.VoucherInsertResultSet; +import com.wonu606.vouchermanager.repository.voucher.resultset.VoucherResultSet; +import com.wonu606.vouchermanager.repository.voucher.store.VoucherJdbcStore; +import com.wonu606.vouchermanager.repository.voucher.store.VoucherStore; +import java.util.List; +import java.util.Optional; +import java.util.stream.Stream; +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.jdbc.JdbcTest; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +@JdbcTest +@DisplayName("VoucherResultSetJdbcRepository 테스트") +class VoucherJdbcRepositoryTest { + + private VoucherRepository voucherJdbcRepository; + + @Autowired + private NamedParameterJdbcTemplate namedParameterJdbcTemplate; + + @BeforeEach + void setUp() { + VoucherReader reader = new VoucherJdbcReader(namedParameterJdbcTemplate, + new VoucherReaderRowMapperManager()); + VoucherStore store = new VoucherJdbcStore(namedParameterJdbcTemplate); + voucherJdbcRepository = new VoucherJdbcRepository(reader, store); + } + + @ParameterizedTest + @MethodSource("givenVoucherInsertQuery") + @DisplayName("insert_새 Voucher라면_저장된다.") + public void insert_NewVoucher_ReturnInsertedVoucher(VoucherInsertQuery query) { + // Given + VoucherInsertResultSet expected = new VoucherInsertResultSet(1); + + // When + VoucherInsertResultSet actual = voucherJdbcRepository.insert(query); + + // Then + Assertions.assertThat(actual.getAffectedRowsCount()) + .isEqualTo(expected.getAffectedRowsCount()); + } + + @ParameterizedTest + @MethodSource("givenVoucherInsertQuery") + @DisplayName("findById_존재하는 Voucher라면_해당 Voucher를 반환한다.") + public void findById_ExistingVoucher_ReturnVoucher(VoucherInsertQuery query) { + // Given + voucherJdbcRepository.insert(query); + VoucherFindQuery voucherFindQuery = new VoucherFindQuery(query.getVoucherId()); + VoucherResultSet expected = new VoucherResultSet(query.getVoucherClassSimpleName(), + query.getVoucherId(), query.getDiscountValue()); + + // When + Optional actual = voucherJdbcRepository.findById(voucherFindQuery); + + // Then + assertThat(actual.isPresent()).isTrue(); + assertThat(actual.get()).usingRecursiveComparison().isEqualTo(expected); + } + + @ParameterizedTest + @MethodSource("givenVoucherInsertQuery") + @DisplayName("findAll_조건 없음_모든 바우처를 반환한다.") + public void findAll_NoConditions_ReturnAllVouchers(VoucherInsertQuery query) { + // Given + voucherJdbcRepository.insert(query); + VoucherResultSet expectedResultSet = new VoucherResultSet( + query.getVoucherClassSimpleName(), query.getVoucherId(), + query.getDiscountValue()); + + // When + List actual = voucherJdbcRepository.findAll(); + + // Then + assertThat(actual).hasSize(1); + assertThat(actual).usingRecursiveComparison().isEqualTo(List.of(expectedResultSet)); + } + + @ParameterizedTest + @MethodSource("givenVoucherInsertQuery") + public void deleteById_ExistingVoucher_VoucherIsDeleted(VoucherInsertQuery query) { + // Given + voucherJdbcRepository.insert(query); + VoucherDeleteQuery voucherDeleteQuery = new VoucherDeleteQuery(query.getVoucherId()); + + // When + voucherJdbcRepository.deleteById(voucherDeleteQuery); + List actual = voucherJdbcRepository.findAll(); + + // Then + assertThat(actual).hasSize(0); + } + + static Stream givenVoucherInsertQuery() { + VoucherInsertQuery voucherInsertQuery = new VoucherInsertQuery("fixed", + "eaea93d1-08e4-4311-ad44-7b6a626c1a71", 10.0); + + return Stream.of(Arguments.of(voucherInsertQuery)); + } +} diff --git a/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucherwallet/VoucherWalletJdbcRepositoryTest.java b/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucherwallet/VoucherWalletJdbcRepositoryTest.java index deb889c14b..f38398a253 100644 --- a/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucherwallet/VoucherWalletJdbcRepositoryTest.java +++ b/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/voucherwallet/VoucherWalletJdbcRepositoryTest.java @@ -2,10 +2,8 @@ import static org.assertj.core.api.Assertions.assertThat; -import com.wonu606.vouchermanager.domain.customer.Customer; -import com.wonu606.vouchermanager.domain.customer.email.Email; -import com.wonu606.vouchermanager.domain.voucher.Voucher; import com.wonu606.vouchermanager.repository.voucher.VoucherJdbcRepository; +import com.wonu606.vouchermanager.repository.voucher.VoucherRepository; import com.wonu606.vouchermanager.repository.voucher.query.VoucherInsertQuery; import com.wonu606.vouchermanager.repository.voucher.reader.VoucherJdbcReader; import com.wonu606.vouchermanager.repository.voucher.reader.VoucherReader; @@ -16,12 +14,13 @@ import com.wonu606.vouchermanager.repository.voucherwallet.query.OwnedVouchersQuery; import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletDeleteQuery; import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletInsertQuery; -import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletUpdateQuery; +import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletRegisterQuery; import com.wonu606.vouchermanager.repository.voucherwallet.reader.VoucherWalletJdbcReader; import com.wonu606.vouchermanager.repository.voucherwallet.reader.VoucherWalletReader; import com.wonu606.vouchermanager.repository.voucherwallet.reader.rowmapper.VoucherWalletReaderRowMapperManager; import com.wonu606.vouchermanager.repository.voucherwallet.resultset.OwnedCustomerResultSet; import com.wonu606.vouchermanager.repository.voucherwallet.resultset.OwnedVoucherResultSet; +import com.wonu606.vouchermanager.repository.voucherwallet.resultset.WalletInsertResultSet; import com.wonu606.vouchermanager.repository.voucherwallet.store.VoucherWalletJdbcStore; import com.wonu606.vouchermanager.repository.voucherwallet.store.VoucherWalletStore; import java.util.List; @@ -36,11 +35,11 @@ import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; @JdbcTest -@DisplayName("JdbcCustomerVoucherWalletRepository 테스트") +@DisplayName("CustomerVoucherWalletJdbcRepository 테스트") class VoucherWalletJdbcRepositoryTest { - private VoucherWalletJdbcRepository voucherWalletJdbcRepository; - private VoucherJdbcRepository voucherJdbcRepository; + private VoucherWalletRepository voucherWalletRepository; + private VoucherRepository voucherRepository; @Autowired private NamedParameterJdbcTemplate namedParameterJdbcTemplate; @@ -52,89 +51,133 @@ void setUp() { new VoucherWalletReaderRowMapperManager()); VoucherWalletStore voucherWalletJdbcStore = new VoucherWalletJdbcStore( namedParameterJdbcTemplate); - voucherWalletJdbcRepository = new VoucherWalletJdbcRepository(voucherWalletReader, + voucherWalletRepository = new VoucherWalletJdbcRepository(voucherWalletReader, voucherWalletJdbcStore); VoucherReader voucherReader = new VoucherJdbcReader(namedParameterJdbcTemplate, new VoucherReaderRowMapperManager()); VoucherStore voucherStore = new VoucherJdbcStore(namedParameterJdbcTemplate); - voucherJdbcRepository = new VoucherJdbcRepository(voucherReader, voucherStore); + voucherRepository = new VoucherJdbcRepository(voucherReader, voucherStore); } @ParameterizedTest - @MethodSource("givenVoucher") - @DisplayName("findOwnedVouchersByCustomer_저장된 Customer가 있다면_매핑된 Voucher id를 반환한다.") - void findOwnedVouchersByCustomer_SavedEmailAddress_ReturnsVoucherIds(Voucher voucher) { - // given - voucherJdbcRepository.insert(new VoucherInsertQuery(voucher.getClass().getSimpleName(), - voucher.getUuid().toString(), voucher.getDiscountValue())); - - String expectedVouchedId = voucher.getUuid().toString(); - voucherWalletJdbcRepository.insert(new WalletInsertQuery(expectedVouchedId)); - String expectCustomId = "Hello@naver.com"; - voucherWalletJdbcRepository.update( - new WalletUpdateQuery(expectCustomId, expectedVouchedId)); - - // when - List actualOwnedVouchersByCustomer = voucherWalletJdbcRepository.findOwnedVouchersByCustomer( - new OwnedVouchersQuery(expectCustomId)); - - // then - assertThat(actualOwnedVouchersByCustomer).hasSize(1); - assertThat(actualOwnedVouchersByCustomer.get(0).getVoucherId()).isEqualTo( - expectedVouchedId); + @MethodSource("givenVoucherInsertQuery") + @DisplayName("findOwnedVouchersByCustomer_존재하는 Customer라면_소유한 VoucherList 반환한다.") + public void findOwnedVouchersByCustomer_ExistingCustomer_ReturnOwnedVouchers( + VoucherInsertQuery voucherInsertQuery) { + // Given + voucherRepository.insert(voucherInsertQuery); + voucherWalletRepository.insert(new WalletInsertQuery(voucherInsertQuery.getVoucherId())); + + OwnedVouchersQuery ownedVouchersQuery = new OwnedVouchersQuery("test@test.org"); + voucherWalletRepository.register( + new WalletRegisterQuery(ownedVouchersQuery.getCustomerId(), + voucherInsertQuery.getVoucherId())); + + OwnedVoucherResultSet ownedVoucherResultSet = new OwnedVoucherResultSet( + voucherInsertQuery.getVoucherId()); + + // When + List actual = voucherWalletRepository.findOwnedVouchersByCustomer( + ownedVouchersQuery); + + // Assert + assertThat(actual).usingRecursiveComparison().isEqualTo(List.of(ownedVoucherResultSet)); } @ParameterizedTest - @MethodSource("givenVoucher") - @DisplayName("findOwnedCustomersByVoucher_할당된 VoucherId라면_가지고 있는 Customer의 Email을 반환한다.") - void findOwnedCustomersByVoucher_SavedVoucherId_ReturnsEmail(Voucher voucher) { - // given - voucherJdbcRepository.insert(new VoucherInsertQuery(voucher.getClass().getSimpleName(), - voucher.getUuid().toString(), voucher.getDiscountValue())); - - String expectedVouchedId = voucher.getUuid().toString(); - voucherWalletJdbcRepository.insert(new WalletInsertQuery(expectedVouchedId)); - String expectCustomId = "Hello@naver.com"; - voucherWalletJdbcRepository.update( - new WalletUpdateQuery(expectCustomId, expectedVouchedId)); - - // when - List actualOwnedCustomersByVoucher = voucherWalletJdbcRepository.findOwnedCustomersByVoucher( - new OwnedCustomersQuery(expectedVouchedId)); - - // then - assertThat(actualOwnedCustomersByVoucher).hasSize(1); - assertThat(actualOwnedCustomersByVoucher.get(0).getCustomerId()).isEqualTo(expectCustomId); + @MethodSource("givenVoucherInsertQuery") + @DisplayName("findOwnedCustomersByVoucher_존재하는 Voucher라면_소유한 CustomerList 반환한다.") + public void findOwnedCustomersByVoucher_ExistingVoucher_ReturnOwnedCustomers( + VoucherInsertQuery voucherInsertQuery) { + // Given + voucherRepository.insert(voucherInsertQuery); + voucherWalletRepository.insert(new WalletInsertQuery(voucherInsertQuery.getVoucherId())); + OwnedCustomersQuery ownedCustomersQuery = new OwnedCustomersQuery( + voucherInsertQuery.getVoucherId()); + String customerId = "test@test.org"; + voucherWalletRepository.register( + new WalletRegisterQuery(customerId, voucherInsertQuery.getVoucherId())); + + // When + List actual = voucherWalletRepository.findOwnedCustomersByVoucher( + ownedCustomersQuery); + + // Then + assertThat(actual).hasSize(1); + assertThat(actual).usingRecursiveComparison() + .isEqualTo(List.of(new OwnedCustomerResultSet(customerId))); } @ParameterizedTest - @MethodSource("givenVoucher") - @DisplayName("delete_저장된 VoucherId라면_삭제한다.") - void delete_SavedVoucherId_delete(Voucher voucher) { - // given - voucherJdbcRepository.insert(new VoucherInsertQuery(voucher.getClass().getSimpleName(), - voucher.getUuid().toString(), voucher.getDiscountValue())); - - String expectedVouchedId = voucher.getUuid().toString(); - voucherWalletJdbcRepository.insert(new WalletInsertQuery(expectedVouchedId)); - voucherWalletJdbcRepository.insert(new WalletInsertQuery(expectedVouchedId)); - - // when - voucherWalletJdbcRepository.delete(new WalletDeleteQuery("NULL", expectedVouchedId)); - voucherWalletJdbcRepository.delete(new WalletDeleteQuery("NULL", expectedVouchedId)); - - List actualOwnedCustomersByVoucher = voucherWalletJdbcRepository.findOwnedCustomersByVoucher( - new OwnedCustomersQuery(expectedVouchedId)); - - // then - assertThat(actualOwnedCustomersByVoucher).hasSize(0); + @MethodSource("givenVoucherInsertQuery") + @DisplayName("delete_존재하는 Wallet이라면_삭제한다.") + public void delete_ExistingWallet_WalletIsDeleted(VoucherInsertQuery voucherInsertQuery) { + // Given + voucherRepository.insert(voucherInsertQuery); + voucherWalletRepository.insert(new WalletInsertQuery(voucherInsertQuery.getVoucherId())); + OwnedCustomersQuery ownedCustomersQuery = new OwnedCustomersQuery( + voucherInsertQuery.getVoucherId()); + String customerId = "test@test.org"; + voucherWalletRepository.register( + new WalletRegisterQuery(customerId, voucherInsertQuery.getVoucherId())); + WalletDeleteQuery walletDeleteQuery = new WalletDeleteQuery(customerId, + voucherInsertQuery.getVoucherId()); + + // When + voucherWalletRepository.delete(walletDeleteQuery); + List actual = voucherWalletRepository.findOwnedCustomersByVoucher( + ownedCustomersQuery); + + // Then + assertThat(actual).hasSize(0); } - static Stream givenVoucher() { - Customer customer1 = new Customer( - new Email("Linlin@onepiece.org"), "Big Mom"); + @ParameterizedTest + @MethodSource("givenVoucherInsertQuery") + @DisplayName("insert_새로 기입_기입한 정보가 저장된다.") + public void insert_NewEntry_EntryIsInserted(VoucherInsertQuery voucherInsertQuery) { + // Given + voucherRepository.insert(voucherInsertQuery); + voucherWalletRepository.insert(new WalletInsertQuery(voucherInsertQuery.getVoucherId())); + WalletInsertResultSet expected = new WalletInsertResultSet(1); + WalletInsertQuery walletInsertQuery = new WalletInsertQuery( + voucherInsertQuery.getVoucherId()); + + // When + WalletInsertResultSet actual = voucherWalletRepository.insert(walletInsertQuery); + + // Then + assertThat(actual).usingRecursiveComparison().isEqualTo(expected); + } + + @ParameterizedTest + @MethodSource("givenVoucherInsertQuery") + @DisplayName("register_존재하는 빈 Wallet이라면_기입한 정보가 업데이트된다.") + public void register_ExistingEmptyWallet_EntryIsRegistered( + VoucherInsertQuery voucherInsertQuery) { + // Given + voucherRepository.insert(voucherInsertQuery); + voucherWalletRepository.insert(new WalletInsertQuery(voucherInsertQuery.getVoucherId())); + String customerId = "test@test.org"; + WalletRegisterQuery walletRegisterQuery = new WalletRegisterQuery(customerId, + voucherInsertQuery.getVoucherId()); + OwnedCustomerResultSet expectedResultSet = new OwnedCustomerResultSet(customerId); + + // When + voucherWalletRepository.register(walletRegisterQuery); + List actualList = voucherWalletRepository.findOwnedCustomersByVoucher( + new OwnedCustomersQuery(voucherInsertQuery.getVoucherId())); + + // Then + assertThat(actualList).usingRecursiveFieldByFieldElementComparator() + .contains(expectedResultSet); + } + + static Stream givenVoucherInsertQuery() { + VoucherInsertQuery voucherInsertQuery = new VoucherInsertQuery("fixed", + "eaea93d1-08e4-4311-ad44-7b6a626c1a71", 10.0); - return Stream.of(Arguments.of(customer1)); + return Stream.of(Arguments.of(voucherInsertQuery)); } } diff --git a/voucher-manager/src/test/resources/schema.sql b/voucher-manager/src/test/resources/schema.sql index ad09e9600d..3d5e12fe8d 100644 --- a/voucher-manager/src/test/resources/schema.sql +++ b/voucher-manager/src/test/resources/schema.sql @@ -1,7 +1,3 @@ -DROP TABLE if exists voucher_wallet; -DROP TABLE if exists voucher; -DROP TABLE if exists customer; - CREATE TABLE voucher ( voucher_id VARCHAR(36) PRIMARY KEY, @@ -19,7 +15,7 @@ CREATE TABLE customer CREATE TABLE voucher_wallet ( - voucher_id VARCHAR(36) NOT NULL, + voucher_id VARCHAR(36) NOT NULL, customer_id VARCHAR(100), FOREIGN KEY (voucher_id) REFERENCES voucher (voucher_id) ON DELETE CASCADE From c39642305d109bed3b1cb8d1342d2f02a9fe4d85 Mon Sep 17 00:00:00 2001 From: wonu606 Date: Wed, 26 Jul 2023 02:08:21 +0900 Subject: [PATCH 33/37] =?UTF-8?q?test:=20Service=20=EA=B3=84=EC=B8=B5=20?= =?UTF-8?q?=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=BD=94=EB=93=9C=20=EC=9E=91?= =?UTF-8?q?=EC=84=B1=20=EB=B0=8F=20=ED=86=B5=EA=B3=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../converter/VoucherResponseConverter.java | 2 +- .../voucher/resultset/VoucherResultSet.java | 10 +- .../converter/VoucherResultConverter.java | 2 +- .../service/voucher/result/VoucherResult.java | 10 +- .../VoucherWalletJdbcRepositoryTest.java | 8 +- .../service/customer/CustomerServiceTest.java | 141 +++++++++++++ .../service/voucher/VoucherFactoryTest.java | 6 +- .../service/voucher/VoucherServiceTest.java | 162 ++++++++------- .../VoucherWalletServiceTest.java | 186 ++++++++++++++++++ 9 files changed, 440 insertions(+), 87 deletions(-) create mode 100644 voucher-manager/src/test/java/com/wonu606/vouchermanager/service/customer/CustomerServiceTest.java create mode 100644 voucher-manager/src/test/java/com/wonu606/vouchermanager/service/voucherwallet/VoucherWalletServiceTest.java diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/converter/VoucherResponseConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/converter/VoucherResponseConverter.java index af854e3542..78e25a3210 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/converter/VoucherResponseConverter.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/converter/VoucherResponseConverter.java @@ -8,7 +8,7 @@ public class VoucherResponseConverter implements TypedConverter argument = ArgumentCaptor.forClass( + CustomerCreateQuery.class); + then(repository).should().insert(argument.capture()); + CustomerCreateQuery actual = argument.getValue(); + assertThat(actual).usingRecursiveComparison().isEqualTo(excepted); + } + + @Test + @DisplayName("getCustomerList_존재하는 Customer라면_CustomerList를 반환한다.") + void getCustomerList_WhenCustomersExist_ReturnsListOfCustomers() { + // Given + List resultSets = List.of( + new CustomerResultSet("test@test.com", "nickname")); + given(repository.findAll()).willReturn(resultSets); + + List expectedResult = List.of( + new CustomerResult("test@test.com", "nickname")); + + // When + List actualResult = customerService.getCustomerList(); + + // Then + assertThat(actualResult).hasSize(1); + assertThat(actualResult).usingRecursiveComparison().isEqualTo(expectedResult); + } + + @Test + @DisplayName("findOwnedVouchersByCustomer_유효한 CustomerId라면_Voucher List를 반환한다.") + void findOwnedVouchersByCustomer_WithValidCustomerId_ReturnsListOfVouchers() { + // Given + List expectedResults = List.of(new OwnedVoucherResult("voucherId")); + given(voucherWalletService.findOwnedVouchersByCustomer(any())).willReturn(expectedResults); + OwnedVouchersParam expected = new OwnedVouchersParam("customerId"); + + // When + customerService.findOwnedVouchersByCustomer(expected); + + // Then + ArgumentCaptor argument = ArgumentCaptor.forClass( + OwnedVouchersParam.class); + then(voucherWalletService).should().findOwnedVouchersByCustomer(argument.capture()); + OwnedVouchersParam actual = argument.getValue(); + assertThat(actual).usingRecursiveComparison().isEqualTo(expected); + } + + @Test + @DisplayName("deleteWallet_유효한 파라미터라면_월렛을 제거한다.") + void deleteWallet_WithValidParam_WalletIsDeleted() { + // Given + UUID voucherUuid = UUID.randomUUID(); + WalletDeleteParam expected = new WalletDeleteParam(voucherUuid, "customerId"); + + // When + customerService.deleteWallet(expected); + + // Then + ArgumentCaptor argument = ArgumentCaptor.forClass( + WalletDeleteParam.class); + then(voucherWalletService).should().deleteWallet(argument.capture()); + WalletDeleteParam actual = argument.getValue(); + assertThat(actual).usingRecursiveComparison().isEqualTo(expected); + } + + @Test + @DisplayName("registerToWallet_유효한 파라미터라면_Wallet에 등록한다.") + void registerToWallet_WithValidParam_WalletIsRegistered() { + // Given + UUID voucherUuid = UUID.randomUUID(); + WalletRegisterParam expected = new WalletRegisterParam(voucherUuid, "customerId"); + + // When + customerService.registerToWallet(expected); + + // Then + ArgumentCaptor argument = ArgumentCaptor.forClass( + WalletRegisterParam.class); + then(voucherWalletService).should().registerToWallet(argument.capture()); + WalletRegisterParam actual = argument.getValue(); + assertThat(actual).usingRecursiveComparison().isEqualTo(expected); + } +} diff --git a/voucher-manager/src/test/java/com/wonu606/vouchermanager/service/voucher/VoucherFactoryTest.java b/voucher-manager/src/test/java/com/wonu606/vouchermanager/service/voucher/VoucherFactoryTest.java index a9aa587896..8e97980aaa 100644 --- a/voucher-manager/src/test/java/com/wonu606/vouchermanager/service/voucher/VoucherFactoryTest.java +++ b/voucher-manager/src/test/java/com/wonu606/vouchermanager/service/voucher/VoucherFactoryTest.java @@ -30,7 +30,7 @@ void setup() { @DisplayName("create_type이 FIXED이면_FixedAmountVoucher를 생성한다.") @Test - public void Create_TypeIsFIXED_CreatesFixedAmountVoucher() { + void Create_TypeIsFIXED_CreatesFixedAmountVoucher() { // Given UUID testUuid = UUID.randomUUID(); given(uuidGenerator.generateUUID()).willReturn(testUuid); @@ -49,7 +49,7 @@ public void Create_TypeIsFIXED_CreatesFixedAmountVoucher() { @DisplayName("create_type이 PERCENT이면_PercentageVoucher를 생성한다.") @Test - public void Create_TypeIsPERCENT_CreatesPercentageVoucher() { + void Create_TypeIsPERCENT_CreatesPercentageVoucher() { // Given UUID testUuid = UUID.randomUUID(); given(uuidGenerator.generateUUID()).willReturn(testUuid); @@ -68,7 +68,7 @@ public void Create_TypeIsPERCENT_CreatesPercentageVoucher() { @DisplayName("create_type이 존재하지 않는다면_예외가 발생한다.") @Test - public void Create_TypeDoesNotExist_ThrowsException() { + void Create_TypeDoesNotExist_ThrowsException() { // Given UUID uuid = UUID.randomUUID(); double discountValue = 10.0; diff --git a/voucher-manager/src/test/java/com/wonu606/vouchermanager/service/voucher/VoucherServiceTest.java b/voucher-manager/src/test/java/com/wonu606/vouchermanager/service/voucher/VoucherServiceTest.java index 2334b10c1e..0db8c0fa55 100644 --- a/voucher-manager/src/test/java/com/wonu606/vouchermanager/service/voucher/VoucherServiceTest.java +++ b/voucher-manager/src/test/java/com/wonu606/vouchermanager/service/voucher/VoucherServiceTest.java @@ -1,68 +1,94 @@ -//package com.wonu606.vouchermanager.service.voucher; -// -//import static org.junit.jupiter.api.Assertions.assertEquals; -//import static org.mockito.BDDMockito.given; -//import static org.mockito.BDDMockito.then; -//import static org.mockito.Mockito.mock; -//import static org.mockito.Mockito.times; -// -//import com.wonu606.vouchermanager.domain.voucher.Voucher; -//import com.wonu606.vouchermanager.service.voucher.param.VoucherCreateParam; -//import com.wonu606.vouchermanager.repository.voucher.VoucherRepository; -//import com.wonu606.vouchermanager.service.voucher.factory.VoucherFactory; -//import java.util.Arrays; -//import java.util.List; -//import org.junit.jupiter.api.BeforeEach; -//import org.junit.jupiter.api.DisplayName; -//import org.junit.jupiter.api.Test; -// -//@DisplayName("VoucherService 테스트") -//public class VoucherServiceTest { -// -// private VoucherFactory factory; -// -// private VoucherRepository voucherRepository; -// -// private VoucherService voucherService; -// -// @BeforeEach -// public void setup() { -// this.factory = mock(VoucherFactory.class); -// this.voucherRepository = mock(LocalMemoryVoucherVoucherRepository.class); -// this.voucherService = new VoucherService(factory, voucherRepository); -// } -// -// @Test -// @DisplayName("VoucherDto가 주어지고_createVoucher하면_바우처를 생성한다.") -// public void GivenVoucherDto_WhenCreateVoucher_ThenReturnExpectedVoucher() { -// // Given -// VoucherCreateParam dto = mock(VoucherCreateParam.class); -// Voucher expectedVoucher = mock(Voucher.class); -// -// given(factory.create(dto)).willReturn(expectedVoucher); -// given(voucherRepository.save(expectedVoucher)).willReturn(expectedVoucher); -// -// // When -// Voucher actualVoucher = voucherService.createVoucher(dto); -// -// // Then -// then(factory).should(times(1)).create(dto); -// then(voucherRepository).should(times(1)).save(expectedVoucher); -// assertEquals(expectedVoucher, actualVoucher); -// } -// -// @Test -// @DisplayName("Voucher들을 저장한 뒤_getVoucherList하면_바우처들을 반환한다.") -// public void GivenSavedVouchers_WhenGetVoucherList_ThenReturnsExpectedVouchers() { -// // Given -// List expectedVouchers = Arrays.asList(mock(Voucher.class), mock(Voucher.class)); -// given(voucherRepository.findAll()).willReturn(expectedVouchers); -// -// // When -// List actualVouchers = voucherService.getVoucherList(); -// -// // Then -// then(voucherRepository).should(times(1)).findAll(); -// assertEquals(expectedVouchers, actualVouchers); -// } -//} +package com.wonu606.vouchermanager.service.voucher; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.BDDMockito.given; +import static org.mockito.BDDMockito.then; +import static org.mockito.Mockito.mock; + +import com.wonu606.vouchermanager.domain.voucher.FixedAmountVoucher; +import com.wonu606.vouchermanager.repository.voucher.VoucherRepository; +import com.wonu606.vouchermanager.repository.voucher.query.VoucherInsertQuery; +import com.wonu606.vouchermanager.repository.voucher.resultset.VoucherInsertResultSet; +import com.wonu606.vouchermanager.repository.voucher.resultset.VoucherResultSet; +import com.wonu606.vouchermanager.service.voucher.converter.VoucherServiceConverterManager; +import com.wonu606.vouchermanager.service.voucher.factory.VoucherFactory; +import com.wonu606.vouchermanager.service.voucher.factory.util.UUIDGenerator; +import com.wonu606.vouchermanager.service.voucher.param.VoucherCreateParam; +import com.wonu606.vouchermanager.service.voucher.result.VoucherResult; +import java.util.List; +import java.util.UUID; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.mockito.ArgumentCaptor; + +@DisplayName("VoucherService 테스트") +public class VoucherServiceTest { + + private VoucherRepository repository; + private VoucherService voucherService; + + @BeforeEach + void setUp() { + repository = mock(VoucherRepository.class); + VoucherFactory factory = new VoucherFactory(new FixedUUIDGenerator()); + VoucherServiceConverterManager converterManager = new VoucherServiceConverterManager(); + voucherService = new VoucherService(repository, factory, converterManager); + } + + @Test + @DisplayName("createVoucher_유효한 파리미터_바우처를 생성한다.") + void createVoucher_WithValidParameters_VoucherIsCreated() { + // Given + double expectedDiscountValue = 50.0; + VoucherCreateParam param = new VoucherCreateParam("fixed", expectedDiscountValue); + VoucherInsertResultSet successResultSet = new VoucherInsertResultSet(1); + given(repository.insert(any())).willReturn(successResultSet); + + VoucherInsertQuery expectedQuery = new VoucherInsertQuery( + FixedAmountVoucher.class.getSimpleName(), + FixedUUIDGenerator.FIXED_UUID.toString(), expectedDiscountValue); + + // When + voucherService.createVoucher(param); + + // Then + ArgumentCaptor argument = ArgumentCaptor.forClass( + VoucherInsertQuery.class); + then(repository).should().insert(argument.capture()); + VoucherInsertQuery actualQuery = argument.getValue(); + assertThat(actualQuery).usingRecursiveComparison().isEqualTo(expectedQuery); + } + + @Test + @DisplayName("getVoucherList_바우처가 존재한다면_바우처 리스트를 반환한다.") + void getVoucherList_WhenVouchersExist_ReturnsListOfVouchers() { + // Given + VoucherResultSet voucherResultSet = new VoucherResultSet( + FixedAmountVoucher.class.getSimpleName(), + FixedUUIDGenerator.FIXED_UUID.toString(), 50.0); + given(repository.findAll()).willReturn(List.of(voucherResultSet)); + + VoucherResult expectedResult = new VoucherResult(voucherResultSet.getUuid(), + voucherResultSet.getVoucherClassType(), voucherResultSet.getDiscountValue()); + + // When + List actualVoucherResults = voucherService.getVoucherList(); + + // Then + assertThat(actualVoucherResults).hasSize(1); + assertThat(actualVoucherResults).usingRecursiveFieldByFieldElementComparator() + .contains(expectedResult); + } + + private static class FixedUUIDGenerator extends UUIDGenerator { + + public static UUID FIXED_UUID = UUID.fromString("42424242-4242-4242-4242-424242424242"); + + @Override + public UUID generateUUID() { + return FIXED_UUID; + } + } +} diff --git a/voucher-manager/src/test/java/com/wonu606/vouchermanager/service/voucherwallet/VoucherWalletServiceTest.java b/voucher-manager/src/test/java/com/wonu606/vouchermanager/service/voucherwallet/VoucherWalletServiceTest.java new file mode 100644 index 0000000000..f1d395ea9b --- /dev/null +++ b/voucher-manager/src/test/java/com/wonu606/vouchermanager/service/voucherwallet/VoucherWalletServiceTest.java @@ -0,0 +1,186 @@ +package com.wonu606.vouchermanager.service.voucherwallet; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.BDDMockito.given; +import static org.mockito.BDDMockito.then; + +import com.wonu606.vouchermanager.repository.voucherwallet.VoucherWalletRepository; +import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletDeleteQuery; +import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletInsertQuery; +import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletRegisterQuery; +import com.wonu606.vouchermanager.repository.voucherwallet.resultset.OwnedCustomerResultSet; +import com.wonu606.vouchermanager.repository.voucherwallet.resultset.OwnedVoucherResultSet; +import com.wonu606.vouchermanager.repository.voucherwallet.resultset.WalletInsertResultSet; +import com.wonu606.vouchermanager.service.customer.param.WalletRegisterParam; +import com.wonu606.vouchermanager.service.voucher.VoucherService; +import com.wonu606.vouchermanager.service.voucher.param.VoucherCreateParam; +import com.wonu606.vouchermanager.service.voucher.result.VoucherResult; +import com.wonu606.vouchermanager.service.voucherwallet.converter.VoucherWalletServiceConverterManager; +import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedCustomersParam; +import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedVouchersParam; +import com.wonu606.vouchermanager.service.voucherwallet.param.WalletAssignParam; +import com.wonu606.vouchermanager.service.voucherwallet.param.WalletDeleteParam; +import com.wonu606.vouchermanager.service.voucherwallet.result.OwnedCustomerResult; +import com.wonu606.vouchermanager.service.voucherwallet.result.OwnedVoucherResult; +import java.util.List; +import java.util.UUID; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.ArgumentCaptor; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + +@ExtendWith(MockitoExtension.class) +@DisplayName("VoucherWalletService 테스트") +class VoucherWalletServiceTest { + + @Mock + private VoucherService voucherService; + @Mock + private VoucherWalletRepository repository; + + private VoucherWalletService voucherWalletService; + + @BeforeEach + void setUp() { + VoucherWalletServiceConverterManager converterManager = new VoucherWalletServiceConverterManager(); + voucherWalletService = new VoucherWalletService(voucherService, repository, + converterManager); + } + + @Test + @DisplayName("findOwnedVouchersByCustomer_유효한 CustomerId라면_Voucher List를 반환한다.") + void findOwnedVouchersByCustomer_WithValidCustomerId_ReturnsListOfVouchers() { + // Given + String voucherUUID = "42424242-4242-4242-4242-424242424242"; + ; + given(repository.findOwnedVouchersByCustomer(any())).willReturn( + List.of(new OwnedVoucherResultSet(voucherUUID))); + + OwnedVoucherResult expectedResult = new OwnedVoucherResult(voucherUUID); + + OwnedVouchersParam param = new OwnedVouchersParam("test@test.org"); + + // When + List actualResult = voucherWalletService.findOwnedVouchersByCustomer( + param); + + // Then + assertThat(actualResult).hasSize(1); + assertThat(actualResult).usingRecursiveFieldByFieldElementComparator() + .contains(expectedResult); + } + + @Test + @DisplayName("deleteWallet_유효한 파라미터라면_Wallet을 제거한다.") + void deleteWallet_WithValidParam_WalletIsDeleted() { + // Given + WalletDeleteParam param = new WalletDeleteParam(UUID.randomUUID(), "test@test.org"); + WalletDeleteQuery expectedQuery = new WalletDeleteQuery(param.getCustomerEmail(), + param.getVoucherUuid().toString()); + + // When + voucherWalletService.deleteWallet(param); + + // Then + ArgumentCaptor argument = ArgumentCaptor.forClass( + WalletDeleteQuery.class); + then(repository).should().delete(argument.capture()); + WalletDeleteQuery actual = argument.getValue(); + assertThat(actual).usingRecursiveComparison().isEqualTo(expectedQuery); + } + + @Test + @DisplayName("assignWallet_유효한 파라미터라면_Wallet을 할당한다") + void assignWallet_WithValidParam_WalletIsAssigned() { + // Given + WalletAssignParam param = new WalletAssignParam(UUID.randomUUID()); + WalletInsertQuery expectedQuery = new WalletInsertQuery(param.getVoucherId().toString()); + given(repository.insert(any())).willReturn(new WalletInsertResultSet(1)); + + // When + voucherWalletService.assignWallet(param); + + // Then + ArgumentCaptor argument = ArgumentCaptor.forClass( + WalletInsertQuery.class); + then(repository).should().insert(argument.capture()); + WalletInsertQuery actual = argument.getValue(); + assertThat(actual).usingRecursiveComparison().isEqualTo(expectedQuery); + } + + @Test + @DisplayName("findOwnedCustomersByVoucher_유효한 파라미터라면_Customer List를 반환한다.") + void findOwnedCustomersByVoucher_WithValidParam_ReturnsListOfCustomers() { + // Given + OwnedCustomersParam param = new OwnedCustomersParam(UUID.randomUUID()); + + OwnedCustomerResultSet resultSet = new OwnedCustomerResultSet("test@test.org"); + given(repository.findOwnedCustomersByVoucher(any())).willReturn(List.of(resultSet)); + OwnedCustomerResult expectedResult = new OwnedCustomerResult(resultSet.getCustomerId()); + + // When + List actualResult = voucherWalletService.findOwnedCustomersByVoucher( + param); + + // Then + assertThat(actualResult).hasSize(1); + assertThat(actualResult).usingRecursiveFieldByFieldElementComparator() + .contains(expectedResult); + } + + + @Test + @DisplayName("createVoucher_유효한 파라미터라면_Voucher를 생성한다.") + void createVoucher_WithValidParam_CreatedVoucher() { + // Given + VoucherCreateParam param = new VoucherCreateParam("voucherType", 50.0); + + // When + voucherWalletService.createVoucher(param); + + // Then + ArgumentCaptor argument = ArgumentCaptor.forClass( + VoucherCreateParam.class); + then(voucherService).should().createVoucher(argument.capture()); + VoucherCreateParam actual = argument.getValue(); + assertThat(actual).usingRecursiveComparison().isEqualTo(param); + } + + @Test + @DisplayName("getVoucherList_데이터가 있을 경우_Voucher List를 반환한다.") + void getVoucherList_WhenDataExists_ReturnsListOfVouchers() { + // Given + List expectedResult = List.of( + new VoucherResult("voucherId", "voucherType", 50.0)); + given(voucherService.getVoucherList()).willReturn(expectedResult); + + // When + List actualResult = voucherWalletService.getVoucherList(); + + // Then + assertThat(actualResult).usingRecursiveComparison().isEqualTo(expectedResult); + } + + @Test + @DisplayName("registerToWallet_유효한 파라미터라면_Wallet을 할당한다.") + void registerToWallet_WithValidParam_WalletIsRegistered() { + // Given + WalletRegisterParam param = new WalletRegisterParam(UUID.randomUUID(), "customerId"); + WalletRegisterQuery expectedQuery = new WalletRegisterQuery(param.getCustomerId(), + param.getVoucherId().toString()); + + // When + voucherWalletService.registerToWallet(param); + + // Then + ArgumentCaptor argument = ArgumentCaptor.forClass( + WalletRegisterQuery.class); + then(repository).should().register(argument.capture()); + WalletRegisterQuery actual = argument.getValue(); + assertThat(actual).usingRecursiveComparison().isEqualTo(expectedQuery); + } +} From dce3e357b2038e505de064dd54e44ccd23f11289 Mon Sep 17 00:00:00 2001 From: wonu606 Date: Wed, 26 Jul 2023 02:08:58 +0900 Subject: [PATCH 34/37] =?UTF-8?q?chore:=20=EC=BD=94=EB=93=9C=20=EC=A0=95?= =?UTF-8?q?=EB=A0=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../customer/CustomerRestController.java | 3 ++- .../CustomerCreateResponseConverter.java | 1 - .../VoucherWalletController.java | 6 ++--- .../VoucherWalletRestController.java | 6 +++-- .../OwnedCustomersParamConverter.java | 3 ++- .../reqeust/VoucherCreateRequest.java | 2 +- .../rowmapper/VoucherResultSetRowMapper.java | 1 - .../VoucherWalletJdbcRepository.java | 2 -- .../VoucherWalletRepository.java | 2 -- .../OwnedCustomerResultSetRowMapper.java | 1 - .../OwnedVoucherResultSetRowMapper.java | 1 - .../store/VoucherWalletJdbcStore.java | 2 -- .../store/VoucherWalletStore.java | 2 -- .../voucherwallet/VoucherWalletService.java | 22 +++++++++---------- .../OwnedCustomersQueryConverter.java | 2 +- .../converter/OwnedVoucherQueryConverter.java | 2 +- .../VoucherWalletServiceConverterManager.java | 1 - .../converter/WalletDeleteQueryConverter.java | 2 +- .../WalletRegisterQueryConverter.java | 3 ++- .../vouchermanager/util/TypedConverter.java | 2 ++ .../vouchermanager/util/TypedRowMapper.java | 2 -- .../templates/customers/create-form.html | 2 +- .../customers/owned-vouchers-form.html | 2 +- .../vouchers/assign-wallet-form.html | 6 +++-- .../templates/vouchers/create-form.html | 9 +++++--- .../vouchers/owned-customers-form.html | 6 +++-- .../vouchers/owned-customers-list.html | 3 ++- .../customer/CustomerJdbcRepositoryTest.java | 5 ----- .../service/customer/CustomerServiceTest.java | 2 -- .../service/voucher/VoucherFactoryTest.java | 4 ++-- voucher-manager/src/test/resources/schema.sql | 2 +- 31 files changed, 50 insertions(+), 59 deletions(-) diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/CustomerRestController.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/CustomerRestController.java index 16e6cdb19e..14230ab32a 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/CustomerRestController.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/CustomerRestController.java @@ -45,7 +45,8 @@ public ResponseEntity createCustomer( CustomerCreateParam param = converterManager.convert(request, CustomerCreateParam.class); CustomerCreateResult result = service.createCustomer(param); - CustomerCreateResponse response = converterManager.convert(result, CustomerCreateResponse.class); + CustomerCreateResponse response = converterManager.convert(result, + CustomerCreateResponse.class); return new ResponseEntity<>(response, HttpStatus.CREATED); } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/CustomerCreateResponseConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/CustomerCreateResponseConverter.java index 3fe50a1595..65d6ca04c9 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/CustomerCreateResponseConverter.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/customer/converter/CustomerCreateResponseConverter.java @@ -3,7 +3,6 @@ import com.wonu606.vouchermanager.controller.customer.response.CustomerCreateResponse; import com.wonu606.vouchermanager.service.customer.result.CustomerCreateResult; import com.wonu606.vouchermanager.util.TypedConverter; -import org.springframework.core.convert.converter.Converter; public class CustomerCreateResponseConverter implements TypedConverter { diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/VoucherWalletController.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/VoucherWalletController.java index 4c57ab4ffc..5f8e2684ff 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/VoucherWalletController.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/VoucherWalletController.java @@ -1,6 +1,5 @@ package com.wonu606.vouchermanager.controller.voucherwallet; -import com.fasterxml.jackson.databind.ObjectMapper; import com.wonu606.vouchermanager.controller.voucherwallet.converter.VoucherWalletControllerConverterManager; import com.wonu606.vouchermanager.controller.voucherwallet.reqeust.OwnedCustomersRequest; import com.wonu606.vouchermanager.controller.voucherwallet.reqeust.VoucherCreateRequest; @@ -13,10 +12,8 @@ import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedCustomersParam; import com.wonu606.vouchermanager.service.voucherwallet.param.WalletAssignParam; import com.wonu606.vouchermanager.service.voucherwallet.result.OwnedCustomerResult; -import java.io.IOException; import java.util.List; import java.util.stream.Collectors; -import org.springframework.boot.Banner.Mode; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; @@ -89,7 +86,8 @@ public String assignWallet(Model model) { @PostMapping("/assign-wallet") public String assignWallet(@ModelAttribute WalletAssignRequest walletAssignRequest) { - WalletAssignParam param = converterManager.convert(walletAssignRequest, WalletAssignParam.class); + WalletAssignParam param = converterManager.convert(walletAssignRequest, + WalletAssignParam.class); service.assignWallet(param); return "redirect:/vouchers/list"; } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/VoucherWalletRestController.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/VoucherWalletRestController.java index e06a6f6aee..dd050e9de5 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/VoucherWalletRestController.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/VoucherWalletRestController.java @@ -54,7 +54,8 @@ public ResponseEntity> getVoucherList() { } @PostMapping("/owned-customers") - public ResponseEntity> getOwnedCustomersByVoucher(@RequestBody OwnedCustomersRequest request) { + public ResponseEntity> getOwnedCustomersByVoucher( + @RequestBody OwnedCustomersRequest request) { OwnedCustomersParam param = converterManager.convert(request, OwnedCustomersParam.class); List results = service.findOwnedCustomersByVoucher(param); @@ -67,7 +68,8 @@ public ResponseEntity> getOwnedCustomersByVoucher(@R @PostMapping("/assign-wallet") public ResponseEntity assignWallet(@RequestBody WalletAssignRequest walletAssignRequest) { - WalletAssignParam param = converterManager.convert(walletAssignRequest, WalletAssignParam.class); + WalletAssignParam param = converterManager.convert(walletAssignRequest, + WalletAssignParam.class); service.assignWallet(param); return new ResponseEntity<>(HttpStatus.OK); } diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/converter/OwnedCustomersParamConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/converter/OwnedCustomersParamConverter.java index d7b1c2c3c2..261a7e5b72 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/converter/OwnedCustomersParamConverter.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/converter/OwnedCustomersParamConverter.java @@ -5,7 +5,8 @@ import com.wonu606.vouchermanager.util.TypedConverter; import java.util.UUID; -public class OwnedCustomersParamConverter implements TypedConverter { +public class OwnedCustomersParamConverter implements + TypedConverter { @Override public OwnedCustomersParam convert(OwnedCustomersRequest request) { diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/reqeust/VoucherCreateRequest.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/reqeust/VoucherCreateRequest.java index a592d71aa0..7fa700cd80 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/reqeust/VoucherCreateRequest.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/controller/voucherwallet/reqeust/VoucherCreateRequest.java @@ -2,7 +2,7 @@ public class VoucherCreateRequest { - private String type; + private String type; private double discountValue; public VoucherCreateRequest() { diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/reader/rowmapper/VoucherResultSetRowMapper.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/reader/rowmapper/VoucherResultSetRowMapper.java index 881e83ff71..bca19638f7 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/reader/rowmapper/VoucherResultSetRowMapper.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucher/reader/rowmapper/VoucherResultSetRowMapper.java @@ -4,7 +4,6 @@ import com.wonu606.vouchermanager.util.TypedRowMapper; import java.sql.ResultSet; import java.sql.SQLException; -import org.springframework.jdbc.core.RowMapper; import org.springframework.stereotype.Component; @Component diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/VoucherWalletJdbcRepository.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/VoucherWalletJdbcRepository.java index b74b049452..673ea66e59 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/VoucherWalletJdbcRepository.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/VoucherWalletJdbcRepository.java @@ -5,12 +5,10 @@ import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletDeleteQuery; import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletInsertQuery; import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletRegisterQuery; -import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletUpdateQuery; import com.wonu606.vouchermanager.repository.voucherwallet.reader.VoucherWalletReader; import com.wonu606.vouchermanager.repository.voucherwallet.resultset.OwnedCustomerResultSet; import com.wonu606.vouchermanager.repository.voucherwallet.resultset.OwnedVoucherResultSet; import com.wonu606.vouchermanager.repository.voucherwallet.resultset.WalletInsertResultSet; -import com.wonu606.vouchermanager.repository.voucherwallet.resultset.WalletUpdateResultSet; import com.wonu606.vouchermanager.repository.voucherwallet.store.VoucherWalletStore; import java.util.List; import org.springframework.stereotype.Component; diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/VoucherWalletRepository.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/VoucherWalletRepository.java index e801fa9d12..c2d5e9b054 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/VoucherWalletRepository.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/VoucherWalletRepository.java @@ -5,11 +5,9 @@ import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletDeleteQuery; import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletInsertQuery; import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletRegisterQuery; -import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletUpdateQuery; import com.wonu606.vouchermanager.repository.voucherwallet.resultset.OwnedCustomerResultSet; import com.wonu606.vouchermanager.repository.voucherwallet.resultset.OwnedVoucherResultSet; import com.wonu606.vouchermanager.repository.voucherwallet.resultset.WalletInsertResultSet; -import com.wonu606.vouchermanager.repository.voucherwallet.resultset.WalletUpdateResultSet; import java.util.List; public interface VoucherWalletRepository { diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/reader/rowmapper/OwnedCustomerResultSetRowMapper.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/reader/rowmapper/OwnedCustomerResultSetRowMapper.java index b82b3d0698..f38efdd143 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/reader/rowmapper/OwnedCustomerResultSetRowMapper.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/reader/rowmapper/OwnedCustomerResultSetRowMapper.java @@ -4,7 +4,6 @@ import com.wonu606.vouchermanager.util.TypedRowMapper; import java.sql.ResultSet; import java.sql.SQLException; -import org.springframework.jdbc.core.RowMapper; public class OwnedCustomerResultSetRowMapper implements TypedRowMapper { diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/reader/rowmapper/OwnedVoucherResultSetRowMapper.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/reader/rowmapper/OwnedVoucherResultSetRowMapper.java index feacc460f4..34adc7cecb 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/reader/rowmapper/OwnedVoucherResultSetRowMapper.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/reader/rowmapper/OwnedVoucherResultSetRowMapper.java @@ -4,7 +4,6 @@ import com.wonu606.vouchermanager.util.TypedRowMapper; import java.sql.ResultSet; import java.sql.SQLException; -import org.springframework.jdbc.core.RowMapper; public class OwnedVoucherResultSetRowMapper implements TypedRowMapper { diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/store/VoucherWalletJdbcStore.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/store/VoucherWalletJdbcStore.java index ce432ddbf1..39ecb575a9 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/store/VoucherWalletJdbcStore.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/store/VoucherWalletJdbcStore.java @@ -3,9 +3,7 @@ import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletDeleteQuery; import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletInsertQuery; import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletRegisterQuery; -import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletUpdateQuery; import com.wonu606.vouchermanager.repository.voucherwallet.resultset.WalletInsertResultSet; -import com.wonu606.vouchermanager.repository.voucherwallet.resultset.WalletUpdateResultSet; import java.util.HashMap; import java.util.Map; import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/store/VoucherWalletStore.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/store/VoucherWalletStore.java index 493bde0122..61ab9c71e7 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/store/VoucherWalletStore.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/repository/voucherwallet/store/VoucherWalletStore.java @@ -3,9 +3,7 @@ import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletDeleteQuery; import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletInsertQuery; import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletRegisterQuery; -import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletUpdateQuery; import com.wonu606.vouchermanager.repository.voucherwallet.resultset.WalletInsertResultSet; -import com.wonu606.vouchermanager.repository.voucherwallet.resultset.WalletUpdateResultSet; public interface VoucherWalletStore { diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/VoucherWalletService.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/VoucherWalletService.java index 8c4a274f8c..0656254da9 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/VoucherWalletService.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/VoucherWalletService.java @@ -1,25 +1,24 @@ package com.wonu606.vouchermanager.service.voucherwallet; -import com.wonu606.vouchermanager.repository.voucher.resultset.VoucherResultSet; -import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletRegisterQuery; -import com.wonu606.vouchermanager.service.customer.param.WalletRegisterParam; -import com.wonu606.vouchermanager.service.voucher.VoucherService; -import com.wonu606.vouchermanager.service.voucher.param.VoucherCreateParam; -import com.wonu606.vouchermanager.service.voucher.result.VoucherCreateResult; -import com.wonu606.vouchermanager.service.voucher.result.VoucherResult; -import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedCustomersParam; -import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedVouchersParam; -import com.wonu606.vouchermanager.service.voucherwallet.param.WalletDeleteParam; import com.wonu606.vouchermanager.repository.voucherwallet.VoucherWalletRepository; import com.wonu606.vouchermanager.repository.voucherwallet.query.OwnedCustomersQuery; import com.wonu606.vouchermanager.repository.voucherwallet.query.OwnedVouchersQuery; import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletDeleteQuery; import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletInsertQuery; +import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletRegisterQuery; import com.wonu606.vouchermanager.repository.voucherwallet.resultset.OwnedCustomerResultSet; import com.wonu606.vouchermanager.repository.voucherwallet.resultset.OwnedVoucherResultSet; import com.wonu606.vouchermanager.repository.voucherwallet.resultset.WalletInsertResultSet; +import com.wonu606.vouchermanager.service.customer.param.WalletRegisterParam; +import com.wonu606.vouchermanager.service.voucher.VoucherService; +import com.wonu606.vouchermanager.service.voucher.param.VoucherCreateParam; +import com.wonu606.vouchermanager.service.voucher.result.VoucherCreateResult; +import com.wonu606.vouchermanager.service.voucher.result.VoucherResult; import com.wonu606.vouchermanager.service.voucherwallet.converter.VoucherWalletServiceConverterManager; +import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedCustomersParam; +import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedVouchersParam; import com.wonu606.vouchermanager.service.voucherwallet.param.WalletAssignParam; +import com.wonu606.vouchermanager.service.voucherwallet.param.WalletDeleteParam; import com.wonu606.vouchermanager.service.voucherwallet.result.OwnedCustomerResult; import com.wonu606.vouchermanager.service.voucherwallet.result.OwnedVoucherResult; import com.wonu606.vouchermanager.service.voucherwallet.result.WalletAssignResult; @@ -36,7 +35,8 @@ public class VoucherWalletService { private final VoucherWalletRepository voucherWalletRepository; private final VoucherWalletServiceConverterManager converterManager; - public VoucherWalletService(VoucherService voucherService, VoucherWalletRepository voucherWalletRepository, + public VoucherWalletService(VoucherService voucherService, + VoucherWalletRepository voucherWalletRepository, VoucherWalletServiceConverterManager converterManager) { this.voucherService = voucherService; this.voucherWalletRepository = voucherWalletRepository; diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/OwnedCustomersQueryConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/OwnedCustomersQueryConverter.java index ee900d08a9..d80479bf9c 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/OwnedCustomersQueryConverter.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/OwnedCustomersQueryConverter.java @@ -1,7 +1,7 @@ package com.wonu606.vouchermanager.service.voucherwallet.converter; -import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedCustomersParam; import com.wonu606.vouchermanager.repository.voucherwallet.query.OwnedCustomersQuery; +import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedCustomersParam; import com.wonu606.vouchermanager.util.TypedConverter; public class OwnedCustomersQueryConverter implements diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/OwnedVoucherQueryConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/OwnedVoucherQueryConverter.java index 016fa948fb..2751ceedff 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/OwnedVoucherQueryConverter.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/OwnedVoucherQueryConverter.java @@ -1,7 +1,7 @@ package com.wonu606.vouchermanager.service.voucherwallet.converter; -import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedVouchersParam; import com.wonu606.vouchermanager.repository.voucherwallet.query.OwnedVouchersQuery; +import com.wonu606.vouchermanager.service.voucherwallet.param.OwnedVouchersParam; import com.wonu606.vouchermanager.util.TypedConverter; public class OwnedVoucherQueryConverter implements diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/VoucherWalletServiceConverterManager.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/VoucherWalletServiceConverterManager.java index 1c8522ba38..b3c40b9ff5 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/VoucherWalletServiceConverterManager.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/VoucherWalletServiceConverterManager.java @@ -1,6 +1,5 @@ package com.wonu606.vouchermanager.service.voucherwallet.converter; -import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletRegisterQuery; import com.wonu606.vouchermanager.util.TypedConverter; import java.util.ArrayList; import java.util.List; diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/WalletDeleteQueryConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/WalletDeleteQueryConverter.java index a85b932605..3a0d80afc0 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/WalletDeleteQueryConverter.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/WalletDeleteQueryConverter.java @@ -1,7 +1,7 @@ package com.wonu606.vouchermanager.service.voucherwallet.converter; -import com.wonu606.vouchermanager.service.voucherwallet.param.WalletDeleteParam; import com.wonu606.vouchermanager.repository.voucherwallet.query.WalletDeleteQuery; +import com.wonu606.vouchermanager.service.voucherwallet.param.WalletDeleteParam; import com.wonu606.vouchermanager.util.TypedConverter; public class WalletDeleteQueryConverter implements diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/WalletRegisterQueryConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/WalletRegisterQueryConverter.java index 8585256edc..373b65794c 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/WalletRegisterQueryConverter.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/service/voucherwallet/converter/WalletRegisterQueryConverter.java @@ -4,7 +4,8 @@ import com.wonu606.vouchermanager.service.customer.param.WalletRegisterParam; import com.wonu606.vouchermanager.util.TypedConverter; -public class WalletRegisterQueryConverter implements TypedConverter { +public class WalletRegisterQueryConverter implements + TypedConverter { @Override public Class getSourceType() { diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/util/TypedConverter.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/util/TypedConverter.java index b12c799034..b931447d8d 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/util/TypedConverter.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/util/TypedConverter.java @@ -3,7 +3,9 @@ import org.springframework.core.convert.converter.Converter; public interface TypedConverter extends Converter { + Class getSourceType(); + Class getTargetType(); default boolean canConvert(Class sourceType, Class targetType) { diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/util/TypedRowMapper.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/util/TypedRowMapper.java index bd43dd7a84..ea9d83db8b 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/util/TypedRowMapper.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/util/TypedRowMapper.java @@ -1,7 +1,5 @@ package com.wonu606.vouchermanager.util; -import java.sql.ResultSet; -import java.sql.SQLException; import org.springframework.jdbc.core.RowMapper; public interface TypedRowMapper extends RowMapper { diff --git a/voucher-manager/src/main/resources/templates/customers/create-form.html b/voucher-manager/src/main/resources/templates/customers/create-form.html index d8b77428e1..6d833e2002 100644 --- a/voucher-manager/src/main/resources/templates/customers/create-form.html +++ b/voucher-manager/src/main/resources/templates/customers/create-form.html @@ -1,5 +1,5 @@ - + Create Customer diff --git a/voucher-manager/src/main/resources/templates/customers/owned-vouchers-form.html b/voucher-manager/src/main/resources/templates/customers/owned-vouchers-form.html index e4cef78016..94aacdd954 100644 --- a/voucher-manager/src/main/resources/templates/customers/owned-vouchers-form.html +++ b/voucher-manager/src/main/resources/templates/customers/owned-vouchers-form.html @@ -1,5 +1,5 @@ - + Get Owned Vouchers diff --git a/voucher-manager/src/main/resources/templates/vouchers/assign-wallet-form.html b/voucher-manager/src/main/resources/templates/vouchers/assign-wallet-form.html index 4787e86079..6535fd1fdc 100644 --- a/voucher-manager/src/main/resources/templates/vouchers/assign-wallet-form.html +++ b/voucher-manager/src/main/resources/templates/vouchers/assign-wallet-form.html @@ -2,7 +2,8 @@ Find Owned Customers by Voucher - +
@@ -10,7 +11,8 @@

Assign Wallet

- +
diff --git a/voucher-manager/src/main/resources/templates/vouchers/create-form.html b/voucher-manager/src/main/resources/templates/vouchers/create-form.html index 3b679e5b08..7192ac1edb 100644 --- a/voucher-manager/src/main/resources/templates/vouchers/create-form.html +++ b/voucher-manager/src/main/resources/templates/vouchers/create-form.html @@ -2,12 +2,14 @@ Create Voucher - +

Create Voucher

-
+
+
diff --git a/voucher-manager/src/main/resources/templates/vouchers/owned-customers-form.html b/voucher-manager/src/main/resources/templates/vouchers/owned-customers-form.html index 1e5f82ed29..331f75282d 100644 --- a/voucher-manager/src/main/resources/templates/vouchers/owned-customers-form.html +++ b/voucher-manager/src/main/resources/templates/vouchers/owned-customers-form.html @@ -2,7 +2,8 @@ Find Owned Customers by Voucher - +
@@ -10,7 +11,8 @@

Find Customers who Own a Specific Voucher

- +
diff --git a/voucher-manager/src/main/resources/templates/vouchers/owned-customers-list.html b/voucher-manager/src/main/resources/templates/vouchers/owned-customers-list.html index 0b5540f1d1..3f7b9ecda1 100644 --- a/voucher-manager/src/main/resources/templates/vouchers/owned-customers-list.html +++ b/voucher-manager/src/main/resources/templates/vouchers/owned-customers-list.html @@ -2,7 +2,8 @@ Owned Customers - +
diff --git a/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/customer/CustomerJdbcRepositoryTest.java b/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/customer/CustomerJdbcRepositoryTest.java index b01fe5f18e..54708353da 100644 --- a/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/customer/CustomerJdbcRepositoryTest.java +++ b/voucher-manager/src/test/java/com/wonu606/vouchermanager/repository/customer/CustomerJdbcRepositoryTest.java @@ -2,8 +2,6 @@ import static org.assertj.core.api.Assertions.assertThat; -import com.wonu606.vouchermanager.domain.customer.Customer; -import com.wonu606.vouchermanager.domain.customer.email.Email; import com.wonu606.vouchermanager.repository.customer.query.CustomerCreateQuery; import com.wonu606.vouchermanager.repository.customer.reader.CustomerJdbcReader; import com.wonu606.vouchermanager.repository.customer.reader.CustomerReader; @@ -12,13 +10,10 @@ import com.wonu606.vouchermanager.repository.customer.resultset.CustomerResultSet; import com.wonu606.vouchermanager.repository.customer.store.CustomerJdbcStore; import com.wonu606.vouchermanager.repository.customer.store.CustomerStore; -import com.wonu606.vouchermanager.repository.voucher.query.VoucherInsertQuery; import java.util.List; import java.util.stream.Stream; -import org.assertj.core.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; diff --git a/voucher-manager/src/test/java/com/wonu606/vouchermanager/service/customer/CustomerServiceTest.java b/voucher-manager/src/test/java/com/wonu606/vouchermanager/service/customer/CustomerServiceTest.java index b3dcd50f3a..31d917b8d9 100644 --- a/voucher-manager/src/test/java/com/wonu606/vouchermanager/service/customer/CustomerServiceTest.java +++ b/voucher-manager/src/test/java/com/wonu606/vouchermanager/service/customer/CustomerServiceTest.java @@ -5,8 +5,6 @@ import static org.mockito.BDDMockito.given; import static org.mockito.BDDMockito.then; import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; import com.wonu606.vouchermanager.repository.customer.CustomerRepository; import com.wonu606.vouchermanager.repository.customer.query.CustomerCreateQuery; diff --git a/voucher-manager/src/test/java/com/wonu606/vouchermanager/service/voucher/VoucherFactoryTest.java b/voucher-manager/src/test/java/com/wonu606/vouchermanager/service/voucher/VoucherFactoryTest.java index 8e97980aaa..343ceb1ac1 100644 --- a/voucher-manager/src/test/java/com/wonu606/vouchermanager/service/voucher/VoucherFactoryTest.java +++ b/voucher-manager/src/test/java/com/wonu606/vouchermanager/service/voucher/VoucherFactoryTest.java @@ -7,9 +7,9 @@ import com.wonu606.vouchermanager.domain.voucher.FixedAmountVoucher; import com.wonu606.vouchermanager.domain.voucher.PercentageVoucher; import com.wonu606.vouchermanager.domain.voucher.Voucher; -import com.wonu606.vouchermanager.service.voucher.param.VoucherCreateParam; -import com.wonu606.vouchermanager.service.voucher.factory.util.UUIDGenerator; import com.wonu606.vouchermanager.service.voucher.factory.VoucherFactory; +import com.wonu606.vouchermanager.service.voucher.factory.util.UUIDGenerator; +import com.wonu606.vouchermanager.service.voucher.param.VoucherCreateParam; import java.util.UUID; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; diff --git a/voucher-manager/src/test/resources/schema.sql b/voucher-manager/src/test/resources/schema.sql index 3d5e12fe8d..2850db5cce 100644 --- a/voucher-manager/src/test/resources/schema.sql +++ b/voucher-manager/src/test/resources/schema.sql @@ -15,7 +15,7 @@ CREATE TABLE customer CREATE TABLE voucher_wallet ( - voucher_id VARCHAR(36) NOT NULL, + voucher_id VARCHAR(36) NOT NULL, customer_id VARCHAR(100), FOREIGN KEY (voucher_id) REFERENCES voucher (voucher_id) ON DELETE CASCADE From 1bca3e70251c49880be724b68d21ef50bc1e9a88 Mon Sep 17 00:00:00 2001 From: wonu606 Date: Wed, 26 Jul 2023 02:10:08 +0900 Subject: [PATCH 35/37] =?UTF-8?q?doc:=20=EC=9D=B4=EC=A0=84=20=ED=9D=90?= =?UTF-8?q?=EB=A6=84=EB=8F=84=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../\355\235\220\353\246\204\353\217\204.png" | Bin 55918 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 "voucher-manager/doc/\355\235\220\353\246\204\353\217\204.png" diff --git "a/voucher-manager/doc/\355\235\220\353\246\204\353\217\204.png" "b/voucher-manager/doc/\355\235\220\353\246\204\353\217\204.png" deleted file mode 100644 index 75c19cc637c930405587005b5939ffc1a576e4cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55918 zcmeFa2UwKZ)-Fh29FD`qExuueILwuBW3esVR~Y(-LE0VUa4K zkQ!K6cog98Z5RRgDPc>J4t`;~YADKLm3Gn3VPT2ky2)R0v-h&Jv9rKp<(J$4imrskA zkCk7Bp9lQl72)FL6V=;4-_**&;oyd^VRjXi zmg)soJ~{BWosF#p_@!uJX6p!DB4_R5Xb+Ak@bU_9@j(B8gPNw6rY<(W+yYveg`26> z{;JF_YJ0hP3OjqLyV$6kqxfvR)ZF)1<6+_AYUAi|uy|fBAuitiFWkJHEcTC@TX@)* zfd>L{$g}dufEz>q^2;5F5`1tl1uujVF{?b1RYaauRD@Mtj#U)NDk}i}AtTHx!gKE6 z#x@6%cJYu=zUpQwWA0(0Wh@}7&97z-Dd}Gxa`-5FFGUwqCu>zlbBsLAy$;@&Uqp2O zZOy&+kBEp0?jNvnIegB+W1$0@Ha-XM$qUv1iO9;`#@xbn|JuWaJ389A**N{{K{H1O z2Mef++)`LCy0I@%qq?%*6JU@iZ0cj$nonW^2MkLuW%y8*j_WFW#Py#IR8 z*(eJeE9=82^9mg-*xvN; z2Zvl8-Ccn9Vb1!?bswDPX6j-EwzR)L519L3IoDt7UeN;VF<@yx|1K7GrfxPK|N5e) z2X=4u$9a%9{X4b+&N(ox|7i>S%jF;V`+uvQkMA$#!~f4z`+?PanA*7?Sf+xDql25A zql2p>@P9rbJKzhlS6#qgR?uHiD0Zv0-U-Y#9+P^5^f5SGt|IGhawp+|L%E$9xZnq-PGyfNi;6Hr3Jy`xP`n>Gu zZf0%a@{jO5L4kkuJibGZ`VBqr&pYIA?s=F<_HTF|CPV(`dEUYDfAKsycUL!%ru{Qr zk6-Y>6@Ne1J1E|M(bRA5c>t1tQjPyI=3%y+f1c+ZEdLjM%9y!1y8KD0pajQYChqoj z`zP?rLYblsDEBXzUbV2h($8j-f-9OKBc@MVY z|5p6ppaZ-Z)a)Oq_yf!TZ^i$e;xV|{KTq)odjBO>AJnIRhJ-*!b#rmFv$ObfB>&ID zg!uo5VEj8*rUxyI|KIuM!MgwJH2NPJjSnHq|5p6pZOZ@9Xnfe-`ftVmo#OwY(fDA; z`z0D5VpjjKaQqviRfk-IUzGGGWaIa0(E#GkzlT@x{X^aEPyoNE^l!6ZO$(Ppde47& zTa@pAXp8b4<`cgkLVO6D{i2}X-RBPIH~(dF3wh>0u`#-jr10_lqSC*Qb-%CE@gF+j zZ|HOfVc{1I{q9b8Kz{nKo$eo6SnwVQ;1`u1I^Ev}JRMU2`MCW#|NM=8@(>&P4Sn(- z$5PmjZ~sQmh3_BA%sUjoFFvUXnD;ggR)6-nLub{naDsZHju7D#?9%_)^t?l2!XZ2F z_l=1ACipKoi?aDuvqP=?Szj6!uI_ejnig)qlfrlpNr?Xdg&kzszxdX#3j3dqdB2ky z&;5^n_xnaYzCYt)f75CtXHG*l4zZ^oteD^Qoe!uP&m~Ri~4)?z}xBwda+^5^$R1_V< z!h&NdA!W3@j21HptEgLgS{I7CIdiX)!PzbG)p-$xC)L$o1W_D2#>`~Ni%_7Zrn)2l z`i^`{&{6f}s2kYFT$|{5tv0&K8hXEv6w(9Lv+H?*0$$k;e<8+WkLL zMO~*aR9M1J;)DkwO#b{!ni;m!fx>%8A=gCCgGYk>r(coRgW_T8mnyCP;ycU*(lJOL z=D)lY91KRmPDYUvo%U_}>$~&dfvf3$o2!FoVLJ=PKW^-mpHET2v+PPwseNy$lOmV7 z86>&LG0)Pum&=qiI+Ob@D;~DlU!mmiQ{cf&O_t*GmYi?S+_^#uA5&>;cqwSsMiBgF zjjqmb*t*C^F)GiPnWA`*%+B(ss>Xx~sNE&@<`~i*P*|v2So#}sz{7@^qEh(DLKGDHVr#pC^Ry(bo9*>KeKYUH2p4Z6q>}= zcjOnX1P_x(KBVE_ScwSY-rb@V4y0`_c#*Rp?6$d5wC0o_2R)|wZJN^6pKH>-E}h@avUixs;bW+!Rc$ZuZav}baYBv=a^jU+p>6=c8*J0=+EbbhC)(6 zxukKv-Pe(VTuY|%jeQ;EZwzj2JFnWZ$d>3wcaHvil7=EAhqY%V&u=hetf53CTPTQ$ zye>d4x%)Lc4G!iaz6VS8zq+KQ9JuQBSO+6c!|H*ITg3(l1oy-F09a)e{_S}Z#yMD+7HFv#jE(33*C zxd_a=#fINFpG3WHt4d$X*1lsjtM~YLTI0_r<;OvCm=Dp9IHriPI(=tpd#ruUW~Hd} z;eCS4!Tid|$WQw=fxQj~SKWD*EQRMcH#k_c*?UQnl?+mA^2L$}W_QR^$>Tm=p#1rE zg_L-o>|Pd|w?9;!$O_zho7E{glddf+kI`}e8J;&pVL&32+uL6nElO*rZ_)5u&NA*X zT-{zMYn&YYvF90?+sUMfx$#pmRq3BMZli-lrQ5Ys{+ujfCM(d$$nR^5Zukf9nT)CL zqk+kajQ#?G&RrrCB%7UlLn^{8A`%JI%4-%>A;4I=jkOr&nI{cfVel zeKg{5*6d|WypEB#{D6_~l2-rs7gQJ9KKgz+XB@C;QM|jg$cfxN{%KsU!F@nikxX=w zT=Y{Uv!$kL!f93WosF;8NsR(FrydR)%hlQS7bm%W`Dn;hGj_eMb#Ld}MVo;KDXU*b zjnzcPL$xl94;lw1;UB*u{W0)|zpiu3G0nM$8W}GjgH7tWzGnN=nFOODMcsy$S-V^tsh#Bz0sD7a4s~;{?+fcO)4 z&aDiUGnu}`YQsP!ToH@`H3}RL>gJ32%-hJ%n`ZKuUQZ9)+gxeFJvuAiExG+5K(URXL6tDa6qiby-DrLR-NInv6awh`;em!*=oR8;7S~6=)>= zY9zkDcXelJ-u*txeZttULhOgWV}12I>h-qnfUP+;@6D-Xi%&12DnEFPyn2%(Cny%) z`^n)$U6KD=FOLWY5A+EmFPX0M-wkTP3f<^)jU+e5aJ?5RTKfjzEpT3=z+HFIt=YW( z>GfeN#%kWJE5H~+_)Eyw=qRIjEZV6Jh2i(FJcQ$v(=btVNp9QqZ~K4$P@vBJJe)K^ zaM0l4wTkz}+?X)FH0*VA9Hg48N6EeD?1ISdF6Gt~k_AP2M zkEvv1H&y?o>Or?%-?e_7yDG_C9KC!UoO!lmDOQghuT07C3AtNrm5Mug4fB+zXD?scWf_ibfVz2|Wn>>0pJTkmptsM09dd5ZM{o z0K0pV`6Bituk2+#8&+N0lIqDsO|`c?t18^}S{J9_xUe&pa;kLaeX7JPztn%vba1#S zwdYm4^k~G*HI`XvmP?H#&2Q^Ee0Jn<8NJVJj>~*e0f&eIoW}+rGF;NE%J7MS+FHI@2yV|=Y61O*<=2%KbX-=L`9k)GKkX5?X z$`xtSWYhe$dG0wv-y%u7Pp!Pn(DQ@#=(AUJ0@i3syktX<6u<4I$9xX&YwFwxU}x=? z9z5*o=_8gM-F$upt+i14q;#>WSIuQS>;y+qFm9AYPBlhz(yM*#XUjMV8QjpNs_2wB zv9*Uity27Xx*6%&&*q-(Oh+f4IQ+h_NQE5 z^D1AKCb*C#X{gBtKOR}>Y@^4P;dYDCgj};TO<3ni1iZ;8`N~xy*5`1FE4?Qps!xbV zT*&Ueds|OAPHdi?wd3S=D`Q~a7jknBB>oE=TcOdr%8y0XtypC5R-5k9{gEt6cS0fb zwx9@i{pu};Owp-N`5w>kPxSRZ@t#gmycjh6f~)F{EXQ%tRy3Z-&RtX}snC$LaF>Xk zK)MXQXdCukjfA(*2$~!z{owIOAF+Vw|Xub?@yY*vs(zs4mOgHx180Xx559vPhCRN#*D-1}Nr!>yA- zk@a$tHHpNz6dPm|6a<^t*v}eg?wG}`P#^zRf=O6T*R0q444@}*Vj*b{Trp1CNbfb0 z^%ND&BWu<%_P;wmYNsb!?`q$xD%?-Sm&wgSA>tfP0;ddC6{q_M_7?l&>duQpZdCEo z%&Y0-ZfYb^0fnP5otf2}JSLGb=rl}1M;z5u#DRzHfyFC7^nIwptUu>EvMC(p`^7u{9s z-eFwH8QMZJk{b;n)@8P+^9SXQp3i?vl0QsxO5#fE77(b`sev+J`nJa@gWZ>byT73( z&h%Un4K-B7Q;a#@t}1}5PP9fxq5GgBpZJ4I$GNF9_hTMoG7CPeM>@Y|!PYP+cVOjA0Rh$=`(zRn`S|;thN(_WVfe4yi2+tg%u^Od_+*_%~|is zd{z-kZ2e&KCJNi$d$9_%?|l|Z+*xo2$7;!)_f9Y2&%~iZn+uQGQCi)K43(wKc{2co z6R+iGgoDEZ1$C2!kPM3x!geX%-R%8rXZngYxzCMlAmZHP_ZsC?ZMZOH*l9&36Yimt zvDBOcLb*6KhA8FY?!Je|{pkmb>f`E=w7_r$omr8}af8StrjLb-9Ce$gh@$t~z${fpHH8t@9FS|R#RhqA3 zsLlsmjzPj-BnuF~M109`hI0=|@ZSb?5i7-;#wQurBUgOp?k=G4I7TN5DUyORl`;@5 zLA_UdXhfV_beT1RP)WDX>0etVX2J2E&6h$?OM8hu!a=+_8HF_*#7|@ze6IIsXi7Y6 zs^paJ16y)}_o>n>ukw`=1Xl3q5bnVO1a_Z5N}%N%#L02Ns^;D)<24BBor3m8?z+UUw4`n4+PI&75}5nW-ud0X zlrCq8kxalAYb!VY6z(&;S|lFz3+7mTGp}$#T&pxxD9E#Q2bl+Q6i<00v(8jYiq^~E zU1|(T6EA!w!%Q5_6gx!buRek6Yu?FXA0AMPxUK~w7SM>fT}`zTQpHW1kA;W-ma+wf z=ecyoJVYfe`!va038X;z>6H&Ie0OcEY<50Yx`lHJTs8ZNQ%Gwg#y%gLc~^SX{Q5;J z_?b7McOS}3vkXnKK9N+CF?rreM@B2WMta_T-ee7-o5$xPFW; zNgq)@*z9a@?Sel|VQ`QiavW(tB=Jb;23a+uUo{j_uXCRpuK8KINwm01Q6R+6DZ){Ur*#`7CMPNMl;6yX&draTJZ}Rh^aX77hO3 z_pQ_FEnPv=Wa9Uw5n-2575^63Tvc|lGbHvSkNV5knl-0x&?>*~I%}h&E?*?S9eqQ! zTIxjWUJSC(!?t{r<}fi3ye?hQS=L>YpkrGiMzL&TYpK(3qxrhMz))Vkf03I*W7D?_ z6}mI`nnmajP$@VR_F@=|m0sDnpia0TEv%D?qDNY2N0P(FHvP7y^T$OFKXH_Pv+_G_ zEnNsm(e{T{2$D$2-I18XjXgLO3GX6cKO_Bqp}zmJ{#*%umBb)&V|~QYB2IL=&CvOI zzSxD8fV+02Pu^K18&;uBPA%ThwDJ7nPbsnV;fG?jhR3mEqfdv8i@crB!UiMj78LTj z8V9nX%>ose`s%8Ob`A@YU=A7RNpp#Y)Uuh5R%17w9^rm^smwlK-79Xp-*d<`B7eD0 zv}rQWwNtmcT6s8C9AE9Kj)BTxp5oD*8@pGd&s`?my_;;r(Ms92uS1 zSP-uHyDFO~EvQ-=9L`yYJiAgeUFtg16}1)j&1Jkg-XL&m=Uex}u@GHwTWzh)j_O9v zHA3f(&Lf%yYW@0>HG9t8=fC%*nU~8Al!JOhyWoADyKQ~$I;bt}$gfL*QtNg=W%@<4 zQEtyzo8#*zA^k;el~m3gN)cNQZVgiLpj#J0d+VGhULLD|_jWBUiF2w8SMk=94g>|6 z)Q;2n>WR#6N4RRFe`LH&iZ-ZzIqlc4t#eN2waMuH(16~``;37*>c@?|Ol#-vrI|PG zuHS#|1SKfc>2wY?2tk8hCW=SzT~us(@2O@yY+cI|2?6zkRdK$e8P$w(8%PILgx)*J zoqGwJYfef8OC8eI8crB8zP;tj(hO?pBAs^GME|Y1g38x?9c_pR`dnde5(Y7?BksA+ zL6xJ!{vIj>ZiikMEGy6AoasdeR6c6Oq_BOCx6fPsEO%u9c7&@n7Zu8)Qc?;wrH0g{X2F26hOJ_^xgL3_1godY=-ytPV;13AcZC z_Gisq@M_(d;v5tQ7NAH?R?kx?;!>&xMe+H>AfM?JtJU2QGBK1x!=|PC{H$mF+CZ;! zlSmC*5sJl8f?OH!aMneGnu!7C8L78Krplz zH1zDRm0E7Xby<1EwqPS%V*o1C8#d$LgZtuyKYGdWI(hi@sVf$hn9ami7jD@<$Wrz< zQkG2r?6MY-cVUv0LZCBMuvgF;2wh7fp?mB5m$F`L$F{p5$l9>r)U||{CxCiLA6_+J z;HnBiB9j1dDGLc2IS(%s`sg)rYk}0`^3c(E(y1=C?tKF2%O`@DLAl$mp>mE@MEb)MPo0Q(s?P;k0eTE- zLhIy5LWvjwYA_G~WK!|U*y$PmR8c`@j})2|q~q0M!TCz7i^G}(q_p{6)1c61UK)9v zd`~s4oro=VbZpdgghwT3hM`(#=2?*t3r#$c z$Q`uF7=OTy7b^pCHAsT|-H4~DHb z+Tg$DcCz&*m7vhv>o99PH5aKLJFc~#>lRjB_f%yR=zoBcLWMz6Ey?+l6AmHC$?UF^ zo0}pDgf_&;7sAOP*$QGuk7GTu*&kkti(dA#`vhBnfNSwRM5ick=w zB6Dc@E~3f4tll30pfk*nZX;Yh|!%cEM6>L*?insKfg$dmAQ=&|wMwcBQk6iMpw2*_l9>+Q*?OHvuw zE5U0-8qZ#Z_+M2-%L4^8Fs}8|{9E!LG8nd_ik0reimk#)Kd+W7n!&orU{x5vd@i`# zxsKgh!L^7Y)O*5?g7|1flM+)G!}x?q897B5=_hQ((tzjK6V#%Rb2z_beUQeElWy6T z@?-CNqcVI9HL(HUIc>zt_|tA#32V(LJbDp&+pQpjX48-h>~>*cuuai9($HWz7{xK^ zVinWpDXlr-pp12TVZ%lEL7r)uMEyvNDhmz;@7=}ta?iFiC<0otGjo*W>`z1ZztFPv zqIFgki3#G)@=>tLn7<4qqPlSlM$W9Y)f#7$zsEBTVtn?b{P_3rgo~1I-7-PMQoK00 z8Q0%hl4uXW|C?VFA?@p)nLgun1jtA7R;`DXNk> z?QDU&$PSX3S}2`S_CxJ@{IcUps0~2zk~6h5d9&O?WecLZoz>2mD4g5`SXq9-$2g?Z z9OddW8%}j%&r$!!Vkzm7awatiSGQQ#uxAAKW$jLOe(U<3;Kgx&HAClo1dX*{_(ONF z0|R^grb62^`6^)zc~bGzb)tHgO0_frn_FX?;)L%%bX`I*jkS4#pvfhbA#lu1b?L~7 zxX(8nj&~G!o}m$06qx{`c7xe<$V)5>uaUxwP;(~l0VJ;(MM|vpX;lseuyBbjLMFU| zq*bCGksClsG=e7zW2HkbFdt>)i)+i+8YOJI0e~Rgi@ilEGF5Vk#}ymZw^X)ML~bp|EOm65Gk3it7mJ5DC+vbaVl^;Q zPji!vAfjT6I5BgIEw&0*?Ov1yC^XJd$BB%El1AJ@uWqSPu{D4wb~iOz#EAt*jRC*c z%Mk=bom)7q^rn5UF<#^Pq%Ge4)rxnxa?bd-53?~8^=v8IMdb|>L@ zo)gXQQ(OzwGFCYhnV13G(2L3-oW59hw43Jy3}-%&d|bLh9u^10A4x+j=AuF7AyTBS zN588u$Gv3r2@O+UBh0}^gw#vpW%GYzbq}4TM4gI++hJcgqJ+m}7b#)VX|m+JPO^u5 zpMBznz%30No6FbggVUXM%h#!yt8@Pd&8Y1Wi(MKVQ3ZI{r}zobwwT3quTr($UQ!)Z zYCNqXF*RZCtUNIf)YsgKhY4&ANo9uSqUM^kvBn77oPV*AzgsLlTDljM|47K zwqS@xjfGU>dR9rp*1XS_D*Hp*)uop=h12Y^)-7zETc?nxF1#9NTM1DRz#^-?9}+An za!#=|Jv~pDHlB6%Bpa<2sUm&-Tc_7>7@Sl&9+t0oX{34THa{8LX8x10#S`tJy)SL* z>C$*nVZkIpi%px{7B|r*G2 zd3(qOK%u3{Z}z>1A0uX{5TYoNj=!MDB(fdchd72KKE<%A=zM9AQ3y4znyW^u=SaN$ zY`x=;V2K`h+`h$&SBw=b60Lab!sF?C`&~s*eBV?j)Rv&`Cpv8J=MK+RX=Qd_E|H2D zgg(~HkyJ9{EM=HI+(h`THj9~j5gT(oUf&lsa;KQiZKPkl8Ai&7t4J+-U5uaeAF0==@YAk6Y{h`5H^PSa!=+>47<{c31}65L?4I&w_&UYI6m?k9s+ zGtf=}^=Mg3+O~x7TtG{*h1p7z-&sDf<$L^-&$b4dK0>h2eB%UGx{ML_N15T~xP3x! z^DiSty2_~R2#_glqlWL~i_@>>C_ zw`qCnugmAkwcpfTU|6Q5 zfV1qTatdB`!@kg)T(U_kjMZi<8;a?Y3!1VVOE-s_tCwWtuMCDuf5fcY-r;naJkuRg zErMY50BOQqKCwqe=O~}q!Rhd1^`7786mi@9Kk{TwN(5a-gn%;rHa{hTr89*yJjeLZ1M+u1tf`{#_FMcV{gS7?J58N3Cnv;mJaDf);}JMtATr9E4{vt)Rz0 z4=wtn-KN|=`$CFzO7jzX)wXi7H++S?np^*ypu;KmM8%YSGJ^UH;uSrHjF2yy&_cc( z1I+LF!$KiHntg^uM^Ky58Qfs#28lV+zIQqC{DxD@oI7w{8QqB8rx^?djU0IhCx>ow z=PSU_q#1CWj~@*=7r1|iZv{Di%Jh)I_`SPy>MqzK8(wzi#jUWrVhl!NUVt;-U_f-q~)g%7J#?2|A~&^h^<9>=u! z@%T@HyrvK^6+VsAJp#R1Mfp3Rw$-GVf;!YUCAUz=js2WK6wu}H4dKf zD%SL=2`GsO__6Ehz4}&BGhsW1zYBd)YFDeYe*GQNAAIq>=ZU9d?YA!Rg{@&w1Ws-( zlqFl-);+C0>TDzlTDeo8FPsR#2hlFuicHnw(JLXxBo=MozntvMs}~YtW6X*Gn?Oqh ze&6(+2D{F|n(CsdMJon~v%&2ft34Qr*+tyvK3bZ=SOC%Gle%3tzzLKe4P8Cr4f6QA z+V?MSwH=k(fvctoC8askDS@i45xH`#A)O$K2QanfhAQ%2-{F;mYMXQVj}jr2giLG} zK0fIM+Q>z(My@DAz3Hc4U($iz$76wY>)|Z6e#cteZQ94Y-rp?CVmn(0XApCP=3g!F ztA$H3YFe@x>W;yf+U8rmwHR8Aci;SIe>z}1Q@Qwutjnb)kO()2 zgbNM2@9iK7#kZ>W-(Kf)nMBcuxfQz2_bJ^|%iy^Gpi=omBGeIw+V1HfG3Wd8^xORC z&W~=XABpwfKk9E|-R~3{xj=S)^%4!J))e&8L8rUtz7F?N1aFijT=lw@+W9pt{|M2Q z_fKl5ME|t@W z`f7+}I2O`vfRyg>9F5)b)gYZ;xo?*6o*ZQH0zzZtu=M3y1JWY^ zrRw*d&JVnsboo~GfS!t)=oB>|qr@11#s_UR7L5}?wF=EJ{cWf^Ujej`qHh5^Ut2ru zAAh)qd;xHvvtJs2G`#nkh~+bB!dg0VJ=<}#!M#h21^ew$wsfcK5}T6=%9oZu+m_Ye ziwj&BD5<`fj%thKZrrJ4xjks$8oRnMcrgmkJOVj8{IGx$oBZUeJ5aNY*bDbTLpA`} zrHw5vK`mV;ba)d52d>BgMD--=WeC+uk@T;NVU#jLSp^}3-m|kx zxhnVcym1tr*rpY}@xZ%MNAZ$;iq7rs(EL%f`6~@Vp+6c)XjU8rCiAFAu@*4AIB8nC z5UEkzPrBd(Avz|2Si3W8!Az8`&dgC{qX)n#)f}429!dh48Ph`c>8lo??}A)rkf`eU&dL zRoJ7JyTre+=V0?<(Z~?X6}{Z(Lp6;TsE3S0y?ReL#mhK`v%ukNcL2a7#yC$aeOWpa z&Nv}M7KCq(ix;hu0PbDgf4TR198!JRKyKwr-9l*;Cp+oxZRQ|AUTaHb^Nrmpphb*QNF7oHTGz`qm$x)(*&Q%-=7oI*l`jn@?Qx2%x9R z-#>p4Ov*+h$M6`fQbEn@sir> z#~v^91T?|dHUU}Z@^M4Aw{Qu?4%=pWljcN_2S_^Gh|fOA z-aYZLYYd3Oo{6yV>=@H2r!Itm$R=ogqr|O2gLS>OgX>A3O=RDZTv9j;0-9OH;zT~d zcGGL6U6#pQnX9k19MkFRrjL>~$B#d;gNO~LCF^rH2|$zd`D9a6lmqD2_Iw!NRG^eX z0ez=2e+S9WVq-HWTuK6%2pm>Mi-Plhl>uBVyWuP<13u+n55e=`2jo1Ih_m_j^m1@Q zSbjBjK^Hb2PVBP(jT3tSVANZ6dXp{Vqx=IHbH^#)MFi9*73-#!rWbZdzsKQZh7%{q zf`fm&h{_2>goQb&f*qi~M|%%WMoHsgcL_~g(g_C5(t8(Da?JoSp{=z@N|2_oHb_p& zriaBpd=)?P$h;7^i~132X%^xf{l^ZpqUtx0+1V4!HzjiYWfOSE4xtg|6)@wP1_8#i={r^pfuoKCMJH zp+Y&|KB^$Wz6o=xRAVO1)>3iBRXc~>LkjhgVMFghR^w`X5ca2F{OrIv)JvVVjsgq50S4_9^(f$0Bi9S-?>v~0-Y;%t(J+wuXVa%aCG1w@e*OR(@Z3esGaPI?ReigLR4H zGqvn3*3!lGr-uXp^a&uCw&;5o)a0^ZIO@&w6F99UL<7ZC!OBA_TKTU_0n@p0#_ydr zZ`JF86)U;Z75i68H$dKDyv1ij8mvpsKGRnMI*UG?CZ-Qjq3?JexGb`A@LB4p#}_xu zaM_>T~j&o?XZI>Z3JD;oysRl8q5TH@qx#6ZH(*5A`^9Vo~~->kKirfs)`&< zcdX=MY`N8EQWc+U0iRo2Cok=_0~uvs(L2{O59E^YDl~+Qlu}9@|Ijla6Gx$iV^f}n zOJn0W3%~wcH8itC;(RPJZ!lN>NQ#(y@dMByU^Skpg_xg!QuFwVob;(hz;N>kGaK)} zSt0i7)pO@1*7>RxbDh~Ipr7IbSXl$AH_u9xHSYQ7TBca!s(Ig@sfn7nt?v*IY{m6a z+IiY}^jSsE5AHhkmQ~9)x+_DMH#F`p7N?&HV^I-Z84>?u*{7goAJyZdAq}PkZBiar zJqbW7%heID`#iCloTMSSvn*HdQNc?&{)~_@(JW3>0b~pHS8~q-`dUwgnc}#)Ps8SP z^qRxRQ>CE+-^_I;+w&Gcve6bv!MvLK_K!T0wmXW7?e^Usz+zN8u5ZT+FlD{+uw^0`Tp^yvk;@dF8qR|TsAgd&qtnu55~0Z zXIUr$HpU5SH$FvM0G23*@_8HZ&uTy2IBO1=EQwti;vImHTgLVzPa(FaFmxhLTrC5s zmKs4qlN$*UV(#+- zbci*O`gbgkKc9N~tt$aAe06?I{}^foLMJN9SGhXh zuOc++=Nf!L*LSJf0;K7cy=vk`{swMu`nL(l-Ul4Pq|L7J<5dwpr7qb;6!DoMvksb8{viIaMlDG>O6bV2)61Fei#g9_ur z-9j=EfO5EP=g&}|3Ao-{WRp#RgD1FxMQ7KOAN6!|I;}V`xvQ!1$L^Ov+ZRVBafOr< zj|dT0NKc$c6-|LHMTl}7^nQ~7Y2ad>MIpW{F+u1Mu$-a^X(nL8;*~whXYtL9av+Yq z$%SS--u?Z*&;_y^7yOacV!Gfe;V(AdlL@xgl+H(TeRjY%L;DBHj?CloGr3C{Av`xWbL|4It-y7!&sJI;8FIO~%jI=+@A38rU0PZE1-7Z{D7GrV`32vSmV) zZ@~a3tV{s`a?v9__f+ZJu^j8yF0)dIVBhR*REChCn{CrG2EY|MY-WqqyQ0ieM zHi2o8fhBT8l&smowCIDYG9FfKtKbF|vNQv3z#2=+^{CMFiAZ%+Hw7WJ$t1r9sj@uN zC7zqsxaq1IbTGLr;A7R-q}(ambQ%HuZ%xamQ*f{khDU#CW#UYGWUnVELubz&?Nfu5 zV5rg2XBTtGiGV$zz{jjtfFmc~*NwDDge~SYQKm7y4$S!E zg~kzZdF4#|7$7X7Am;WzV>ZuFsKSw_oJ*4wbDPaxBezah(Cmwg#A|+yI9Ah%U5OPz z)#?h62ihDgXPJaDm}&q&vg~M(Nah(Y3X`k#_n5wvpEq} z1d6u(?=J>1!y8UVBAaw?CnZo@;Qbd!Q6sg!E-^$ zymGVgZ;0W`5C$(>88d&o1%gZ;*HzPWEn?8au)J4(${5IXQnU4RH6k1KVzW{)m~&|_ zHzsA8-{7udwciN>G8)jmp%5$m9NlALGV1%~JS$hty?9&JD21kH`Tl@~p{%^jKj=j` z6Q4?~)pazf=sRXCCEszLN%|x@l?Os`R@iL_sD+TNed3YD7d4JYqSy!EY2_J!XW1oW zR526fAw%Fmd#2xt+PCXd3IsQr=Qz{lQ8otV<vK8)s1?0IA#`Jqw3i zk9?-%ltrq|_Y)Qud{2w-&+-f-^hcP(0AP0akv(t6@HPa+TSnQRyLk)(%*t-tv&Gh8 z2C8h}4*mdjB#-=Nag*ulyIpyj-pp5I`_Q9D+rT;s04NYaR+nyPILk}NwxEzlzm zy-j=D|H|7q%A@d5A%IBo3ZQIfxt}gy-vPOk5BEACIJ1FdEPD0xhY?g5WvYVr00=TE z{8smboKvOcK%B z#mWwI(80c7)}Y<5NI#|B|H9Us&t^e*b?+Loq&CI!-8!ZFC#amyI-g8}LC{%x@76Og zU>iT0wtYX_Hk6=5ju|3M#`E>nVTlXSWTk+^w$_)<3cq&>SpYK_h(u)m~pr<2RxH|hoiH?>=Jv&vz*FR#G=r9%<4 zWT5to7~i@%<$f!I_1VXdYe*(&Pz>;-%tY6R%$OHUmdBp)nKt9m2wu~g^eo<$*><`7 zIJ|ejadubxvCuc+C(!HT{M)aO8?`(h!PpLrfZG`0v35Iv4(FT#_ySedZ<*Gg^lx1E z7rn23|3{kUyDifC#`yuuJx}m~=)6NIK68?Sc4JFmSQ_9qh-^41ZCxv`eK%DE-Eq@5yJU`hv=BMpU%g zK>tfy(wB<{2ihr=?y2~Si{W6lins9AwtA~k^e&{}`wsTgjvmlc@c!i~Hdm4jYIol%G7_n0 z12UV+y$#yH5zN;9vOi;ZRc^4%aT7419HENe{ACQyRzzTOFUUH@H$kRl0U&~8{1XP{ z>0HGt8JKn^4^?E|(_GZP&BC_wHDHxA1>Djb$?&#f*GKxwVb#ai?IE>sOy=mvpt>sdz4;Mf{I%cVH4DXA98yVLiek$|LpXZIvuiep`N!lVoRfKDdw_V!q)6}l z!tRCFdgz?XyKv%9vCrd z1LF%!$N_-S?^KK)T?!M~QVm0vyM?b_fXA)$(DnPY69;4LTzCB11X2zT3|;8j)8(2% z|97tA@Uf248wiui*KzHyQ~2+iwZ{2e6TbQaW;0xQ7h=!4ypbV%1@6oY=!={kcZO!E zRO?0@o+PaWd^BEx8c6miV-ZW+2NmIxAV6ld0jk#hAJC+izoS-Ab~<=n;x<>k&h@F2N(_vdOQfO8_b*p3Rd77}!L zFER(_D4;2)%eodxb;-XrG+ZWfy12Uzxd5@k#AG!2Sg}+M5Ok|1@fC^qWHS3E2UB1I zO#49=DXjoX^GdS5gJ><-D9yih3J(U%egUHH>owId-2CkLXxMTqF!$7PJ!^z0zzNne zD$H8jLDiol#a6O*P?oj@?tNpd-`f7A0aINDD$^qomqqdrRaJpM6fzRP&Vz=Dd=s&T z#xEt~3{9yF7CxgwK|ycK)v$5ZeGlLZwxS@#NOBvqf{LuCpr}-~gG%^op1@e2IN=&R zcK9#}wS@w_Z~I&`pt{NL1(4oZ5fK-t@RtDlR8Og)I7B5*e9<%@YX9su&8{;{)41kUsavT}il7hB_h+n7M+-vbuF2 zp3G`H8A-gDwFWUZlMr&@)}dtP_j5S#G?rL+OWyj%eam>uG(&a%2G{#j%{;+HCjTUEDyjZFG9mEG?jW?P>gj>Ozw&tP`M37jH>Mp$|H0g5Iz@NMFF!> zC6PZaG+>qPtPp}2g=Y910*2rBY)FxP(6!3An`YGmhhWaR!LqDHAjqD(Dkp{mwwKmM z?d~9GH%ORFOR5Jnda|v$GxwRej5(hHf_V>Wf7FeGCQC^5Q54Y)7f{51R;GkPC>R#T z^9J6~UmH5)1tvWcBdtHwRnrIVdlJGqg(>v4FEKG6?Vd?FrPq;eI;~2wy*3WWw2WjsAYAT3%Kf6HN3&J z>jEnD)OnvaFf+~SyI2u1pQMk2h=G6u!?O-gmV^xD;E&*BR|Zj{O*GsC5cFgi;^hGV z|HQf8f`z(>UP&MfMs*AaemwRUtb$ag2;|3q%Z7WN=U18hE{cnU$mlvy$8sGRrF;l%KRzH1?tJ zjz>V%_&2TG&|_cmKflQdsf_fiE!maAaZa?lGj$YfY-t{Wn{s{oLl9$uu+Xa0;Y`ud z0%KbDwa&^jm8;u>c957o8YlF#28xcYj3>hs;0kYI&$0Onw87FvUxp%09@c~Eza5%a z2D7GF4mYBdO*Ffnq>DX_m`sd4+ZbhM%1k;}j%jr@*?dqwTS6UEyL~X?ihMG5XTpub zuyQsxx*Y`55MD1ryf!F{=(7`9uR3PTo~hz}7{ z;13a-qoa{Q$fmCaYB*|QUra;L1msu9Q37pe?1E51U}Qs;VY`L}XA<9>4UcVsBK`>Z zgKw|-FB*#B@|EANU5n*KlZsF4f=QUCa6Y*F6~+pGjn3(GS2fm_!hY$**FX~wBoW=q z8PJGC5c|4c`6c(h!PJ!_+0EjD~Lfxq7r8^p$^5VPcQ9bd1y+z$f z{z0o)2|EtR5SR8i#Jm^YWBibqnY<_UdAz({){@zjpk z*tLsBS%!2sE(kZrZ>BrP3+H2oThwsih!}?ro3$Xb0GMZb5x$ zaxct%rV2nmD-Ehi}HqJkJ|Q@Pa2z!WBS#FK#f z0KG0Paek=$X^>cM?p5M$^|<9EB>vSa3|M?Ggt^dTah?`5>*CH8g<@x+a9TG|j$@{PF|hd)h)-7~ zYZ|P4h()qHJ}V2|9T%n?pLC0Ot|mq`8pw2~{0O}RlL|Z$&@cT>GzByW;KB&5Gl{5o zSk=_l59H21D8GJ7IiI4uiznQc90yrsqPg)PZq+UR=+H4fa`z^%Z_N_Q#yEq^N$7LM z^_i~`=(E-l;7|||f*|>KG@;HX@E%pTS!GjYEgOrg32Y%E|-Y$Viib&KB!5bn1pFJY9 zk@zQKb~yg)u@3RREn}W|LR%Ou_GlCwUa5Q7R%CeDH9J~QFMX(eE zbJ}TKAsO}o=lRnN3QzZ*|)`yEJo+0RRnlYrU$fGx_Cm7feF9dfk&dR7nLEB8kGpk?4g?p=%Mvzy1Y z@pi*oI`xhGK2HMnvSlmr1QR#B(57_yg5eQSvm9I9WU@yU#JFeCPrANjjQX`S74qm( z_-gKpjWyuB@lLdhlfy-JG`$;FQVzDCMfEgK>sWCH^RBi#>9*`?HY7^A1a>~$;P~zO zxAQW616D7+nkM*SnIGk_bhE9VH`O(jpU%sx{q38RpkUT^bjpJ@CQOx7k}#!v?PLq3 z*NVbASj3%gMU%(8NRpt7Y5LQ_D%27_>CH4Ane0L$Ht}+StLJ#^pvXqdDTgQN>_$}* zRbPBQtvH3sw_knzX)D}^E*pI>^2vL1HHY{~wtjT_1w2l^;30w6Km7LlW52m0I)`W+ z!-@x5CS+x&mTrXbN?JCXkf>`)Rj~;VqplJwJP&rUcbrS8pg*}1_K;-vt@q5hf+lSa z)8*)7E=>#u>;Cj8L-^d0oM*y@i+HAU0lea*1v{PT`sgz$u3k$L>%P(Uw`2MA^9dcN z8~biBXP=D3dkr^9B$>PKt@Ex1LbA??Bkd5n(vp!aPW@)+Q7PWjW;w12&oGgzDh##1 z9e#>;-KSai_wmX4UY~~dPoHCv)g6>iak!?_AjLbIE;hB+_l+<1Mml@NZAwD<68WRU+!r!WzfKa@S@+zGA%e ztV&#^tC{5G_;&&qcR;prSRI+&tENQWAf&qCANgZ3rF}w-mB|8*8OFu#Dcv3=!_4ys z;IMFjNmc`&T(2Q;GJP_A6xDKACP**GU7nY&0!h(!JvCXD5K-*gwcK-9O1i-v*PAHB z9`-?n^Gb_1HOFI51)=@xGd#a^c!sHc^lG`a#ry|)>TI8zW6SGbC zv)JVLor0tHy8AtbcVq+`gZJ24gm#SM3qh9cjQRG+$4*pc5`DrJ0_zrW{%XRa zu};}CS0yCxjYUoq=7yBdB%62cQw#slzgVihAGMboJ5`kZmg+dQ0^bz+NFt)4N zG3N+jl=uX$bvB$>uDWf_OY!myg-dLzek+yzHBHEc8)!z2=6#=f?WW9t#}y0?Hv|XK zrsYb~|1>iiyk12UV$zYiwg=2xo-boP;fQ zSpIVYh3a)WWiKrePUZ% zY+%W&Rq7i)XM4$bE-I{GtXA&sT%30G-sLAHy?*^7;$tD?VLX(YyY{*z3s7{kSV%H?oD6FJ%(+$^0Q*v)kL z(Mre#MS!VX*bf(*Te}l9Z5fZr_tW)OQE5_srFe*|XtFBpHG0rR&ffyUL|GzzubL;0 z<@fWzA79wt>HqKMeo0Jve>{g=>0IBf6P=|Frz| zylVS;uhPIXc$y$vyaR~dFU{yWlGcVk)TcmAu2Qf9qUST3=-Z$;X9AxFeZzaS@?J1g?yaw|+8Fh}=7$#tza z>vk+s8I)rclLl1K$6O83#n-I&7i!YCjP8C1R+`cEknTJ!MB~u0c>ob|Cfh$G^9TFz z2Yf(0^5qp)!%HgCpn_H0^`9q-3Mi;ejDeN9e3v1=6qU%tWZ@gd%tl`s7RUv~#^Vz0 zNr#Odx}1vo-^@frbO@Wclwz7UG;2V_l)DNL|s*U`9oXQO;%13`x;Jd z7WHXDsj?<6(a7~hb1C&UZ)NuAuijWl=wjC`ZnyZ9w@Opfrn;tBpR~LjS~0>#{qowV z4)xV=g_+sbOp1Fg(OC3V1GtbO;bie-B2D@CFj@r3lS1oDJDXu+DA{o}dnmoU;sLI7 z18Obv60P?9sE@RxC}k`1uk`A&Ec79DUfz`h)$+ZV zShH}qq*E3?V|91eEHs4kxu?8ptz0}g_lCXYYn?p7?c;0ORfnI=G`WBy#xJT;q3_7q zT6UCuQyAGot=GX;`MEo)9CWUpT?hBGRgZ-P`ORsiz4|)HZTP&tyj-qJ=DOCBK#byp ziW>e&rbn3#?3H?)ryXC?h2}im>9fJ5%Fp8vQtYc~1@+v4kky zcUyvKpTw zEh~g&5w{8pD2Urv^Jq6s-P3m5FNgu0eZ-*g zPpn&&teXLd4L+yz$05``p-4voS!Qv+mD)q>kK)H(%BTL$%$H^8;%f{T(vXKxcZ+HE zRG#e8>Bd)W0!90rV@|PL7kgz6@m--BP@dBtDiWAJjDc=hd{ex}YNBcib4SE7{?v-t zeq(9J@hWa1Y#QOU<%G_6*LI3oCI*G(c_mzKRMd<4Yqu}vID*)r4>UWLa>I>|Y%W}^7|nf{GDC`&R@3e~5ue(>xP~!543Li8fBkIK7=8NzL%;dBZ?8eTeZ)`e(C^Uz zD3_nv*_x5w>uQePN4FhzT)?T5)wSJ6vLngRxRHt2xz(%rB#J0G<(vj@eja42dFLGhM-umg+)Ts1al9wKA30TJd9d zLgM1zDAVtkl&@Qlvw!A7Z>R_P<`29Vgs|x6w;bpKo5FEK2BBwBy2s`p=Tn<9QfYrw zHYMEd30>1WB4(NvdrhE}QD`~4+-opW)#}{fNFpZkLA@qAlh-vokmndqDu3y=uz9-( zlF$~JXNY|ILl@@un(1R(IhjT<{L)TLPzTn3yWT^eh$jZEWK79c*uT4DrM9CeO~fY` zOW^Os4RJpMr&75o9hL@3UZdMZ@fxGeJo6_974ihDRjuM+Mk`5}Fg7ohRXKre5tge- zpI5p=%hvNuWOTK~e@CwA!#$V1%Z_yHKSM`;v*$QxNDhvgqf1!fHIW`6Ca8YA(5r=a z&rDYBM*b;9A&_m)N5(gT^NyW*NfUiXT$ww)fgvApb-NYR!5GG~8}ZR^BD;d~+q>C^ z^W>X*IXr2d(^i6YZ9lRW^6QStSEPUWao~!8HdDrwZ?kdUBY6)Of+;^-ZqD)xM5^>(3)BJtyW%G0qj7L57k%T0H!oZKsEX=COnKZ(naL ze82C)*&z&E5qwWkV~{t-3fH4it6*31o;4EPU_BY5|7TipJ}2w? z&yJxAlMD<|tA}*L=gFN~(hy?g)i1$pdM~Zc9T?|lcy^Odi%z2JlrGza{gJ+m`AyMj z7Q&ofO;i$Hcsl!FhHyq}U7tF`cWRtKPZPQs5&Zl$tyTh)e1yD312vb>4&7$uQ^P3+ zaXo6X8rBD@hB`cc@)-h=nZC^Fert7L%_%;nCrwSq+Qs%XpQO@^dwDMc6S3qKRT=83jtThGMJ@V>rPP{j?bK=aved#|TLw`QDd~G2DpZnru?F{UGt^t$YgBIiEV( zVdNFHzfnDy1*4)~a^DvCKUvB_tA_6lc$T{mSM|_-L&M-qj#j|{ z*+k^mitivQ`ku$r^R%1`vJCfMd6*!$$fU-u#mjr~QSX&0!!)bJb$fo3US#K_(8Kdv zO{-oV`_ybMoTi44EGS%a(hllL^behXKX?U%I3V<#fM_J6YEphOrDu_RzE3=@e44MR z%R%QXX*7Emec&smYocPtOP^mIwdd14SYMw?KieHu$7ph^NAp@T&l;C=KeGOr%%5(| zZ;M)+sLDXyEls4+{Y19bIh#O}S2*63tC8-miFV~$2{nC9{fJ}oQMvv`Z=um?mQrzb zJdegesg-k`E5{`18Ag17^Tc@n{%#x34Yrre8*MRDRSo3_6$+0gkoC&*WIRX?R*5|t zeLCYo19>6a4I`L+LZ4w6r{s?_@QNIw4OYV3Qi8OW_Wdl0`q-^tkd=f@ZSt3HT@lMu zNu-OQWh@~WAW`Qa-p*^roFuW&$~L`cd^T>pGjO@Bc{{p44ZtAd0H!EGWDSExnZu_v z&haSNGl}LQrf@QvH+Rp5zfA6BtN&*$T%sDH*?XhWk$>N4={)>u^rz@F4yFaUOCC+l zc(KgbH7#}ruj||0rzK9EmQ#euc5nYTIKw$iMI7ytrSqvc#XL`rAU9bm#oecqZf_8j zT`#qHmxN?52}c!kw4}~ykp#R)6clvXv(4TrdQED68?VMF+So-gpT`v%H?Krf`wP9g zW{k`6;*qU2e`@S@rcrBIc79uHM)YZBa;1`?AE~H0lcO?4g&URjD)pmKB0p2;5qH`W zIj`VE^J)l{C55EfH+;*%uKJ!Jj|&EN=6O3(oKD(oE#3(#t8r1(Hs@60F|-c2!Y`@5 z-%D=k4DXyhwjnErh+QH7%$_ZotepeF2wHiF&vKV^ljt(n+W7nPRAYw@8PT6Gnqc0o zPlNE5S#3_tHyVf{4A8A=qe_h&Y`dE1fp?wPj4){$7z4YzW))g2Cg0=9MFVtir|l2Y zy<{mJ9`B#{?qGjirZ{kNDbE&R>BpO4(! z!=Mi=ArWOH(obMPG>U~oqX9e zv1W8Mg*xBZD!+-YkebM)|Fk;v&#tzZC+krh-Cygq{_p6;{B{Sov4$7cN)&cv%92+% zJr#C0r=FHG9>y}A3ZIRBMfEQ)K-G9~ECnsNuYIy=wPUw!=lQDkPP-D)&(9!XTS@ff zUfm=~%uBM$Iro2pb~im1xVc)%@Zw-h6EgwmUJsJ?M>;G2%Lz?LG5$g{CJU%B^$f zZZgJyVLu%3%Gg9+jZJ7zu}W5eus+g(Ao8C*HnOPfsFllizR~{j*Aa|(u6rY5z%A2vfB&fZ1c{tla+R%+G9Qnlq(AidBW2n1 z)!2u!`tFIMUV^&m1%5cdTpvcLF`lm%@4J;2;xK&bHxf>Kdu|jb#So69RR6IDgN~)W z#>#$PQ12NAE0g?hZ%fg^oC{?!T2(AbVp?D9zOnoz1-SYD-=PA`LOAL&({Ro5en}{i z-(gNg0KH%uQ=vKdZ)fjqNC9gDGVbXi<;IX5v|*U~J5>7Ck?KJegp(ZzCYKp7@btgu zxi6fgIkxsOTXlcQb;1cigsu5g;u-t_F(_GO+wKEEQ6&uYAma?Ce5YmJled- ziv#8=>ECWvnTYKz^Z(TLW?FUAs#i4}a6yn)PFQ^81Ov3C5vdT9zjd-xn`7@{OOd1xh{_yC?01%)4g+_%FJ zIS8`$+)h-%HS^TNh}SRw|J3V88%Ye49*?Y(+zKl|8?y5-KL+?dxCbw??YSU}EYg0Z zS%C|ZnapNNJ>`Ao>1YDtgH4+6{(KWwID|yt>$udxkBLO=w5KCpyx`auqhCZ9(Wl`u zdUE;Aki2?e2>#+u^k^FE7twHW7EPx<*^(nTWp@VgA99 zda?uztr{m&oW5lK4m}y-I+WQnP5wW5>i!4kUa2z!ulDja;rG2o_~kcdpYB85IQysR zr{T9_OWoCX3NT2b@#==96k4UbtRv~noeh8Aznp|zJ_kKP<-ZLk7?zf;Zt<(63zHY$ z(jPTOKFDU`|A)`AwIl%h^Ow27V{klL^!$Gv^2HdUuuvtB?zBpYa6e-God5s)l?ZtL zLa&7BPp-z*{|6>a)!PDWl^gzZn78Q)$9!-VUVE;5s2vpS)eg2TjkmW4-WKSkHsRx4 zBD`}Bt`^^q7NEaCZd`J3JKYqqcPeF_8yS4UmjM3GSA+k>->I4;z*h91b{tr7R1A=q z7TELp^lBwF?!1*He5~l4y1h4Ks|C5PsS3!vPx&wN9%8pr#{X%5!DESLNW@%F$L8Ta zV#VKn6nH|b@B4Ul({ayadUB!QzLV~Vb&mav+i1b+kWU8|qt(dUk#ykff4ZDtSi>u| zBDH&^3W!+~DmIo!!cJ)8mM6 zBhSCPpHFsYK(XkeqM}x36@VdM7O3w$3_q<9yqDHLy#Mrni;Gr3@YjvSQNctrwvtv~ zb6C?R6=tJKDAM2ooZc2+A#HTL39N-2bzqTjy62R7n5Gphr>4;0;^GBB{Fr?c3M^#! zaabc0sOzSmul~@fgLKoIz!!5T5EpIp)p(0D4cc=9k6x(vDGOxLAdksV>+OHCnoUBe zL@hM;M=~?wsZDg_;9xZwwGQ8W=k4l{;Gc5;10@4accG5J$#5d81wfxB#NCi{vgqQD zw@p#+)y_n){dOfHcuL@Jrg~e;F=S&kx@H;pu|mNS%6wTl)6Ud12T(t2lv3uNw`1#$Tf$1hV~h-&wasBeLCcY0jxV)4v>dW$v>FgTMIN2*@p*pu)*jOk z=Ie9b`~!>texjU#Qn)lpjm3<(wZ13>U#<}Wt0F?_&QCC%mlDadl=&Y6O+%XQGTx#6$9|E&S3ct&6Rbjek3)SlMZM{yIBxS8_2r+|5 z1Y*Vv#PshV7S)fxEFmjO+o@`UGiL1JkZClmX`u? zko(ofxCkGhAG5ti8_7;1KL}ny3AR8g?Z}V1R|plV1RSg1;(p>e1$Nx5Zs9} zuL5hn8^X@K4335QsfOKlF#@Uj3==RP5>rgf3&p*2vVTbn(i>ojdW2-@3*E#;gobgR zU@LiOdLNqFCluOiEOaZ9=FVMw+E+yo_%TrjFxu+8-w3Z?Ea*n@*trb3mGUyL#W>@O z8~0N~k~SD)fqmh|^4B$Hv?G8QVH~;;)GVOfn zukd)*Shn4je@`lviQ_*%xk8HU0 zL(hDlg9`pRKwK+9h1WjJV279nH7OUU$D4XQyJ8~7ryCQ9Bq{EkLpkk6n)n2NNl4Jl zapQ%M#B|B_KJkPD5Xm;IBb^&JpV~E#86DiK>FvJ^HNAzq zw?ha=Rl6xk@=bx!(k=s~8U4q{9W(LK@*hVRpq8mbe`+m3QT5Y4YOFQjap0;Pd!|`A z2m8!#@nMz*FOG-Xv-^LPN_kgWnvm>}Bje6bcx%NF+hTtpPf~<^TxmIeDkUjPGgiKYbEj>-u@~OVBZ7Jk zTkq0dJj~9@`@1V@#TLK#cmJ`-SR{n)+BPkP#shBd+f_}4t&8qAfF$lP zmAW0c_d8SLRPTQ~+fv$@BEfIgnQ`qui_m|`o3j&mzDD1hz0gZ1tS;EPT&6F*fFHM2 zWk?vX89e{?E-w<57JKqm>I#L0T`q~oRL+nlyBsIbRJa4%>|qE4++tBj!W1$y*&*Bp zHzL`o*OWylx`G@^vVSG>(fjdezOZ$tKEYBAQT;PCN2^`?v;j&}nv?S?rSY7Q*4hZx zI;E<(ZO!=WY~T5^naPBg~St z9z-=i-EveJ-92;km&yYKkkNUEEAPlfATMw#fTGIzYnf|LH9=%ndQ7qo9_#&v+0~f& z+enQ^u21mSy4f}9#PaiQa3fEkL(RC~jmwxkA(frJ+kG!)J&6L9(pxrkmWBO*&kdl} zkFs6oKW#a*9Qf~#lt4Z*;muoS$4K$pKSs_?u>*;VkA4`5^yXb7DA?`9$GZ>Y%0%mj zD3wJ*FzV%!$R0BPkrlJ*8}}ojvW^V@^x&DM39r;dduyf1xCtVGW$Q(C8LzMQj|_q{ zIu~;_ZuO&FgfcJZe4g!+ajHU$+TWrcxeNo>K!)`S+&ufWrIK$zpy%3KR3EbM48qtI7RKA_4+4eM@>+0lk8H6Y4c_fF(wqOo%TUlw7xUqXv)&7a znw!JoPg}nSK?iE(zMtYZi%Yz(LqeARQ)khpQrhwn=W4=w(i3< zk90g(3$Rh;x(T4LXTI|})69p1J)VD$PQnGcft$qpC_?jn)RhfO0Ml(Y>S z4gIsj9zH${+3_-tV~Q3o*-_H~^h<^f+*HmLy65F1fySPLmUe16Oq*=$^e(1WekmJT z+3I^S5zR8|7b>s2fRRx|7mk%1kK%8EANHWo5Q%;zm{8o)s^~|c%rWi24YASl*NA7& zH=s(mBOjA4%}5)StC7rj*fb%d*D-KD|4wfp7+RL6;jr2Nl=N3kPK79#O{$f@S^Q&m zIG>lAMmBQ$588Q8Cu$VYB6PN41VSeU2f$nDa9ETAGctuU_nxe{MIA<5>@DnZk7V)- zF8HV#`w6a37FFlz|IHZbvxq^6g$jUjTMuAv?BOv&E>Z|5?%}2#_wUcS4fNHjB|IT= zhClXOOgzjn@(4e^yqn3pty{#m54!~gkUpJbkB)wN=GVh%Bx}ZGJw59_sO2{9 z;mW^q^3jo+v5?vJbJaNU2QuZP5${$Q*Eg4)3Gy{>AepRL9P~u~Q#$?wS z5*~}*vGk7Vw{M=eaV^Z3PN8mDZK09q?Xk|G^K3bHi-$$C1K$$vw@~r=kkP6S5{3NZ z_U%m5i~IdbySw>09~^J;JI>`$vCg=U?=vD zuTi4m1;dB!Z;#ac`C<0{)9kPHAKQLk#>|7VzFo;Y^!nHGivjbjpPy#af7X9qFNMQY zEuqAwF+{hVXO6F(D2WKzqC6u2&k-{B427`dXmu&jrh1?GFE2~It`j(U>3oPp@-?VbT-D`yIsMjP>=;oB^W)GCkK84oNDRbfCN*H_T za(3x=BiqBu#4W1dQk|W@har(~TEq3Y1Q34WM)bTiSr)aP*^E*L$r}#F4jzgPR^4G^ z8GcU|uYo2KkiXc|5A^XZ=?Xrh3tC(L6uSwEfL&RFn3R_V`zBx35jqU|x54{Po<}lO zmp%=bjC!e%hq_ekzt?t{4)HfwoFx(=E_m&<#92l%T>FvmgotpLFZYP(kcO2fl;6X) zz(Y_t!nRqbDogg%{4QfNyJ*wmKv_UIH<^+RA3=XE<%lsl6_fpV7w=kmHf~A8By^}= z_Xul9wA$o8vcr$M%ZJ~-7k91yFlh0<^C*x!uMQ2EHqQUhZY^dJ`73f-GSzGqJ*nMW4(2xHls%g;tIY zioZVks;}7e{q{i%ox76Fa8CV#`guksNWSPGj#nnk*_!iC=eK9RI5KX&V-ywpKE@tl zG;o6i?VAK%RbDG1g0N$3>*g47X^)L5l^Bw1ysSs_s(}F)>#XtV2nx@G{80$#i{Mq1 zPYn3M|FFYh4j*h6#FtxzU8Jpo-!j4ok+I^i>I*%Bz&%WSb0sJ9v@9&ew;3k} z76!_`p_-th;M*9?<9)Z!zOwdXFI-ILzhzijn8vk4+)i`>Q-Vr zJ}w;_Ng&8tKD>Ww^csoqg)2%iH%umtM2JQWNx1v*T%%|dHZ4tmBR0;&C&h&A=~0UW zyi@&|Q&)vMEt_m`PX>?k;p|2{&I&iM4A+-^Cxu~vJDpW~>sHBZ1Gdy|p067;5tCuqP>4IC2wsPIXP`eAjWL z%D$!M(jj=Pzg_!^6tZLAGF2ZV;!!9TGis8ldr#U?hv*DAtadf76#L@BcMC;Z*P+R! z?*O05iu>0@5|$gDD&w)LEDCnL4lIG`t>0~%nfsT&ZvU7tt;@>4a^nP9492VGL7N0h zK$9oWR^ont(b;0lScT$pM;=E;+@OjYMG$p&1%fOgp`XRi zs6Kz9^N$;#w>-Ook=9MfF5qIL%DcxW;(4Fko{UT=d={i9t7udU1?|U(9^Q6CptV$% zm4zJp?ksvBN@8f2K_BgoiB>|pW?|3^uo=2Wny= zd7X~W2yx!cs;=g7`AT&-gimw%Y( zAkd-C)09_YRo@@Oa8<%}RCPsDheBlb`ZL4nHw_J2pHg2G#)a87^+#%_h+Oo$VBoe< z?i79_@(gVS)fk+zy12LA_?{XP@1>p0OLTuPMpBxcyq~aCTru4;xj>F;xcbhtvGU3# zOnXD!#AEANJpx|kJKF*kKH(s0YbNEO(fM@J-fS4^Kj7@oJ7nrW^;#lHk-?_nOYvCV z$g$*K9Szy%RHoW*g%KlvW9EHu!m8-CH=;vr8%{PhJAxzkC*F$lZ@Y?3Y^rr@OuiYo zx}N466fLDRB*%2xh4U9Kft0|_8!V1;B87zn3XBXkEG-s~Ia(Y`AKDv0&PL5G&A$V9 z>An6J7(jcfcs?Z*18$Ws@4ecC1GoK~6Ve_NUqkEaH z^S9%ezF4-`v7u*M#(JMeWeGx_sVr+_xM{;5%)d8~S~bqXKW+!B zRz$WXa>Gpih3lTh>qlee?wD4_FC&jjr&{LaJuA(PzH=?#fZ=rt{cfb1?3_;N&2`={{Wm~0~CC7 za4J1E%y*oqe7gCV52v}J@{A)DFrSgX0ZI&9E z0HsNrna-4puVR_2K^S74zt`})Nb_2sj?;aZ>{1s)bga?Uf-poK8<_t(B|Oq!S3136 z*?wcQJ82TnePxcf*yz#CBW9JY&~zH*kiP>)Xz`?vRMJ$*fHGUcf3oRKgM_w>8>Ey=_dhr@1 ztw_~!yGwyVZZu<1tO$wuS@UdFa&)LoE;i(zGh|X2WYz5KSGNLu&f$6X9igZub&m7T-o6Y82yNN zRu`c|2|z;LP*gnr3NnAwE=-JiXD&D{Z-8P|>(%?%tS7z%d;*uAgQ>tv^y6E*ovn3$ zm}buwk*?rK4`eRL=*v1o8c^2#u1=QXr%yj1s9N_v^UA_uKDDf0fM@<(g1^1&34mv| zdzh2gZSQ!=xc0Um0t_r`6^rk4;4CO-e?DZ>ka~pC?qiNxmpDY1{ccdD&%V$4CWS*9 ziM>WT(}|1Dz*DSN+L_lg3-sOr>&0m76<60?;4M2i3MV9nNqj$v4hKQ@<1d7f@vVA% zoN<#zd0maw$`ORD7u%d8AC$;Ws;CKW^O@K>w4FZRVW7b^6B!51y@udcI=S^FP`dQR zLQ!%0pn4l!NW{DEBQWy4R4ndO@?6gKQj*2@ zOoDa8*MUd=D%^>dVF?H*ZXuE7%`txXh&e;Wc}K$LYb$-`slZjo0U^;D^fQtu`rSzy zQgN8qH^xvRXNYg)?GHfEC{1_Ry6YUsF*4?=F=4XhpIK-cZW zJ_7H@-9({~SE=L?-_IQB6prcMkh?TG_xt7puKEnGHn!;Ta_<>!=hH;;Qr-_)07!l6 zKGgloTyUE)`8MwdC@slZ6LX-H(+zN&sptqE0yl{RaSB;Med|&&>cKUZhL9HhUN}GxiXnWLqvG&V>to(SUFFL(X8(@oDQM2BOC4`}`?ieuf#1iQ` z_O?__K1%t*y~j(uNBOvj#e~SCk1s&#Wi+muTu7&LOLf%+|7ci&hbc_Z+S08UG-iu` zlXuYVV@{OCE9ZJLWi~S^bku0j@P$WaQ*H5|L_C&d4#0nKuJcF&Ok~bSa74(WSiQbGhBi5;&oT9%Rg$Vsw1Y)8aU(CD@dG{m?=ysU;Re zVkM~!l85s6kc~L}a5+Kl(0)F&RE@~CyvY^?CO_t`XRchgG?Jm48 zDZC=XGRta4E}f90_@Z)Zf2jtK?IJdUYZBcYQe}k^f1A@;89SvTGXhe4&AM_Y3Z!Sqvk0+$<%LhXBr5S0N0$$CBwp9{=uUC{O~NhP>$aqEA%=aKS68*}BsRIq#6L*rGe`M1=z6$IjQeakJujr? zy(Wes(nV64q!h*w5?D`VEkdWNNt5I{#j`|PwY0#bn5IoCY|r9}gl6Rr8tSO{;NRdN z^gBs&;&ViUz2em)!#>;;_Y8C*0p8jCOP!x!pn6SuSC}z;-*M_BvnXfgtUnr8+goo- z2Un-$d3+~ec~qkgu(W0hGm>TTZwfKm0XNk%TuD|vYyl#27Aej$iVV0+V9`9@a89Fm ze@n`{UD{TB^B65RfrKxPKD)c7u70L!IYQ;8frGod0Z&iVvh3+Q;!k1w>2f+zzI?v7 zz~HN4t6VG1@9RH#dbZnA50vV${>E<;zZn#9VV9_-thqzZ>Sw_nFhQGukNB;OCi2|c zJ94t^jr_k(STOQr7O-hpJ^OjjIrE;gt>K>z79L4ntE_Pm?PJbqWMtUF-+4cM4sbVf zE6dn067yp*d47xq8hyX1cByLTjy)~9DvLuHqki`e^s?~~@^I(y*z$-pEh5hYAs6C@ z2lQL~GwFSnZJZ^~O$rTPmGoCa3r{sBVv<#}>rp&PbR@6t$J@1q75IipYsN)l*aQPkL zh}qp^IT}pU8hF$YdEPFc>xa2J&#=8GZG*@{?up<%X>SaEj_`~qZ`q(|qZD$z^a0C@ zrNW-dSyr3>#_~G$y36;8E$S=&IebLR2)t|(kX;R0&Es_!Kyee^(8S8i7^-lWAou)g|TZT6+*wHFm>Ym8SG?t6`b{1%dtKf>Xls#~@BO!axzWOJvQl#9DzDMM7K1WH< zU|AfQ!DF7O^$Amo^*}2jIKoepgWAD>>wG}Jxi!^l+UWG5)%qc4Qt*@_3yL9xqw;zw|NOQ%`W6nZpg4_-nmo|l=v z?9Hqy+4=o4)nb@Erd zR4PzE)q!HOIi4rWt@8UcTi%Z+CHoQuT{&-)5(ugVVJB$A z!!AnQpx-vUj^fUjXq7~HSI=SdjE;pbVr8U;xWmPiaN$dAm9Ci2xd$kIADTdgHVYN1 zHr+MkXyKTWhdSF2MZV%|Ik!ptH}3qr@smF5Q~x$4O>52EDU}C2+k7w|QgNJrml15} zfDArCmoUOM%?N`Wh~AvZPjyErQpM|4ALFue-T5`EWu+o+X_ThN#D&KY5DR{2(+WSZIGrwMZ|Pl@Q8$&nT5XLL_G zm8huqMX%|#d=JM@tn~RUv7U3x|o;W8Fa47h2G6-q_i8-yiP$%<4PG zSBGtlg^KvmJMlu_WXP0?mp1Vh0)`yHA6H6x)idZ81jad-KA*XWUQK-O{$`iLiD*JO z$?@uBA+14gbW_ybSBF^(e~k8TxAoH;T!M-Y#aG$J?^~#62VsmKzCO@KR@VmK+!^A-T z^rNY!7wA{Q$@d?JvQNOhgjrWH0lTl@d+s~CJ*#>0W@E01(%E$dR07{m^D37Kku^R+ z1mo5ZchDQ38UR(|56zqF9S-fMKeTj{mB`=TFE5j$9?$+2y-zodWF$(v-B~tmnm=Lc zb)`(Ye-oPkBAdm9ynp_A9@Gd=!W*TgT)wqS&*mTAuvZa(ZOEYO1s;@VQ_G-*In%I; z`_2vrEcUe>L*B`hD4J|Mj>C zBH`WCOHu~s`wo)vy3YUoUe=O;B@6<8%`&(RssOV$e1q*+x_r|~$hnepKrLr`7liK; zz_fwtcM`e5l~~qw1MFh1l4?`TNU#Ow>moXG;^p-bL?!_bOEtt@-(gvioMZO{_~s@TV5~Oa25%0=gU2uk;uc{`Ve5+nCnmzmI*czv_P+!!H`RcOdv=5dj9OJd zay18uH>Mhk#kE=2!Zl&I~=_rfcR$L6h3139Cm$dRsiGQSP zd;%ltUPM{CZ+iZ1`4ZtIX8j6#wKV7=gxoBuZJSZ1#0uzWeQ8@6_yg|X+4BeJTm2CX z*wDNOmcY1O4Q*f_<6D4_UjmOPl*bnu6V#&Oy;yKpf2ICj;5%Ju^Qxnv;WOF#VivqX ze`G&k{&`yoXnW1DEBl~IIpR9)^^R!E0O7c(zy7mg!uXc)B zy^DZKZCzl6PPWsVRFj%ZRu+|xF_JUFWCuYz@lQP>)ezIN8_itH;=m(Z&5I*JchE?IPou zUQ8AhC%#lv5hI0Zl;Ld>d81?_^K*qtlZY8pXV3okt3*JbJCb=S$iFR@E7va7B!P`O z+N0rD8$1k0g!-4*kKEIql|7M>k{#S??x$Q3&XbK*NJ_*$GGX6HvANe#w)_5to+}=E z95l;p3(YC0bp2g|NnGLG7%7MSyv^i)_1wW^WgVRj+D=aPx3b7q5cKb@fJC5T)R)w6 zA&>{9?Bu8wLBcmX1IHLb-XHS7Wedl53AzVW6 z42>5r$e-e=-STRCwL6%K_Ns(tg8P}XdEr}#1{sIel4HIfwq)Vr_^g=`zHVkyvBkgV z$}|JXND{7plmRU&qp=)YYljdOt4y!osnBDnM$GKQXP*=j)?@p^+P{}aG6s^WB*GCM zgccv}a0kCR4uXRREE^?HA)`Yid7qi+Oc4cYtCqm(^Mpf_$UYQ5m<3JI0(TjLZ#gI{ zbU%UFr*I6{uqS0fRoM>FXCVnPfXI94>o(?Gzp6bhygU6~=Ma43jwglZ`TzBPkKZHA zH8&xPRf?#oKfVP}UJEz-IiSZ8Ew|!muoZ(DRaVGWA@l|C@P`D+b49cxY$Gjk9Ju`c9{^lS^6!tHpX`eur zuYKclkVnn4AaDWJ*)As==~e)Q!XlnsW(mx$lIRF3}BdcR4SaiS&4AM96y5fn5_zzL}VHFt>a!CSH zdX|{=^T8N1r2iXZ#)^!TgUeD4Tj z)_1|b?*I)OYQR$518Ztl$?pviuWO+1VmtVnGEauqgL@}KZ}L{deUI&}`!!qfh~WSI z$vt(ke?42QeE5fJ;qW0N&}_yX%$O;D%fo#X7SM7|#hMazVG@yfaOZ$lZ6@w80mqLT z(EUC^xX2x$W;3#!OKboz_Yx2q1Hw5(dk_i`G+=c5%5DD=)I>|q4%rxJHZuro`$f>r zYe0M-Kw8Zen?EgDUmh7a-<3X3JYaI~mv#H!61)hWXEh<10762>Cos>57YH%hT7+C9 z`NDr)|KQM=Di&#PX9dd1Ut6(`C2IA|| z)r5d%(;pXYY<`$Den$!(A+kNBf4}i4A?$VAu&{3+*i=FvmR2Xshtk?fYDCiiM18dQ zIZP?pFDkMq(N?Il*FYbhXYYUAkGO%}1+!ot4gddD*0smAyoT{EYqm;lx=QqGQ(`C5 zl~QN5Sr?jHiIYo|kYy#MV?~={r~4d4_ZzynRVqm=CJPl^XiClfaNN=x)ZSqRC0~Q3LT>AWc@6&@t{(@ju;+vl zZbgt8qDc^Uh?&wV*q1)Ar^W`o@x(HPwy3t;W zehyE73)6R-O|)rBGx?C4&>!`tvpMud!Lp4lwXv}+{^Lz3gf=2sO4gTaUtBh-9H1{! zNDw*QjvDCS2x+{n<71!qlwZ~LpDFfYvzACBcy++2?Tj@JO+jL_k<_yUoCc8di!_Wp zmzY4!IUN#2II7B<_mVFJMmj!!DN`OSVi%BEiMY#9hu*EWI$oXyB&`Eiz*f$ za(UI7^S3C;=i2)EsIxs$gTRTu^wy{^0erc=kxu=?Lyo^k&Y*xP-MnS)CwP7d%RjtC5kt|+DAL99HUf` z*tEZt9d}$b&I+83!toxZD^DhBd?8}yKpOH}MGE(<4J)r3m{m53xEMx@S_t_bp#ep= zXtv}V=8xG#3MBiVRR*Jl^fTT`t43?ix7C$@h=w?TFpsnSqQcV5M+keZs8%=o!rR*< z<;<{UA8*w_)8poqh%gU~cW#)_%bL=vdwGd=(;Cm|T^cQ0NgunRi^kn$kg#f^6Jw#i& z9Hdfnw5*LSYWPCI``Vy}<@W?e)A{~$|+? zL$3Ru>cbcx%m!QDxP@gll0;1{jDSL1nJ%2WMGU2;viUuRh0g%X>P~V2{K$_kD2%qP zoI29C>Cp6G6u{xUE^4YO`bM*_`tN!MRL|&Pq*zk;=nL~BZ7&`8zMZS2w%WgeWqLf2 z%-ZjoPr4JAtji1&IuNnqBLzFL{@NqSXH+oC@kt(Z;b(D7f#EDW0<<)dHeDYwUg&8O zbenaDEy-=P$M>Tbv2Ek{twZQV?Dit-$uA-w&%K0EHO{&<5RF;KB73m2`>2TfP|Tcu zgVXmPf~DUIt*jodPAia-xE3UObx2oY$KuxaL#V~l*JqhubEPBqOn{;1q*n~Vfxq*y zRk{QX!pxFDf?X={ru)ETb#`z_P;2_*DWOTOYpBT!06DE$Yas}A3Tj4JVb4oH=o^fE zd0G5zTqm6`?Z+B%70%yvoQ0vsao3Jh&twrYeg}i(hNFDDyY)?H>AAVI1a-aM*P5mm z7xXw__8HOMgSi(^-!Y_cK$bJm-`5n#U}m#T-XYV{TiVa8tvVdNt|G5-Hn}rA-=21) zarxUr`h&{hHSGDP&-DZ{AX>VsdFn}`+!u~t2432T{hU^uY@VB&PI5Gu)M3j7l=ZJO zAg;LfwX0qsu?imkF@MFXQ!)aB3=z+HJ1y1H_HZby4$&scx1GS9VxAw6AJ4@OLn92p z+yh2*oQx$76{oy=MKeh=TZ=Q(<+H}IRn)OD{`tGdKBK#SY_7MnGYJ{HZSd3$gkAT` z$#8|RqJwcfZujvr57i$J2!D9z99v~c?LG1C18C-K5!bI)aci5+@&k~%nk~T-#DwOn zPrBX65_>rLpMKD&WCB}k0tvhfw*{mPq7q;a{#tQE5UaD}k;r=~$?fUVGQ1*m7=dL8 zYt_7J_sf>`y1lc53|WmB)Bj~Ps4N^ov&1Y*2-a$si|eRwtKiiYn#sPSgPvtKx?#Hr z9GwvP)%%fg`0<@S4OX)2#@dDn2VMTK_|&%$Lhu{#c8ZPuX&{~q>q5C8ia2m$fDEHy zd|!N~Vyd48&kw@2=?z;wPqB9s0|EzC`D{0Dxm!OmCl#}c22W_`f^q}73;L5Zd}olR w!lA(Y=e5blb!fEUklmG}I0O>|QLga2>IK_j-ok74o0Z_>xtK{m=N7>G7io3SQ2+n{ From dd7c31cb3b6e560b649253192119bf22dbb7591e Mon Sep 17 00:00:00 2001 From: wonu606 Date: Wed, 26 Jul 2023 02:52:30 +0900 Subject: [PATCH 36/37] =?UTF-8?q?chore:=20=EB=8D=B0=EC=9D=B4=ED=84=B0?= =?UTF-8?q?=EB=B2=A0=EC=9D=B4=EC=8A=A4=20=EC=A0=95=EB=B3=B4=20=ED=99=98?= =?UTF-8?q?=EA=B2=BD=20=EB=B3=80=EC=88=98=EB=A5=BC=20=ED=86=B5=ED=95=B4=20?= =?UTF-8?q?=EB=B0=9B=EB=8F=84=EB=A1=9D=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/voucherwallet/VoucherWallet.java | 18 ------------------ .../src/main/resources/application.properties | 8 ++++---- 2 files changed, 4 insertions(+), 22 deletions(-) diff --git a/voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/voucherwallet/VoucherWallet.java b/voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/voucherwallet/VoucherWallet.java index 166f2dff8b..41e362ad43 100644 --- a/voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/voucherwallet/VoucherWallet.java +++ b/voucher-manager/src/main/java/com/wonu606/vouchermanager/domain/voucherwallet/VoucherWallet.java @@ -20,22 +20,4 @@ public UUID getVoucherUuid() { public String getEmailAddress() { return email; } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - VoucherWallet that = (VoucherWallet) o; - return Objects.equals(getVoucherUuid(), that.getVoucherUuid()) - && Objects.equals(getEmailAddress(), that.getEmailAddress()); - } - - @Override - public int hashCode() { - return Objects.hash(getVoucherUuid(), getEmailAddress()); - } } diff --git a/voucher-manager/src/main/resources/application.properties b/voucher-manager/src/main/resources/application.properties index 7256c72dbb..55853b6255 100644 --- a/voucher-manager/src/main/resources/application.properties +++ b/voucher-manager/src/main/resources/application.properties @@ -1,4 +1,4 @@ -spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver -spring.datasource.url=jdbc:mysql://localhost:3306/springboot_basic -spring.datasource.username=root -spring.datasource.password=1234 +spring.datasource.driver-class-name=${SPRING_DATASOURCE_DRIVERCLASSNAME} +spring.datasource.url=${SPRING_DATASOURCE_URL} +spring.datasource.username=${SPRING_DATASOURCE_USERNAME} +spring.datasource.password=${SPRING_DATASOURCE_PASSWORD} From e0bee58fbf7d4528e5d4b8c2d490bd4f673d89f3 Mon Sep 17 00:00:00 2001 From: wonu606 Date: Wed, 26 Jul 2023 03:01:31 +0900 Subject: [PATCH 37/37] =?UTF-8?q?refactor:=20customer=20=ED=8E=98=EC=9D=B4?= =?UTF-8?q?=EC=A7=80=20bootstrap=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../templates/customers/create-form.html | 26 +++++--- .../resources/templates/customers/list.html | 38 ++++++----- .../customers/owned-vouchers-form.html | 20 ++++-- .../customers/owned-vouchers-list.html | 66 +++++++++++-------- 4 files changed, 88 insertions(+), 62 deletions(-) diff --git a/voucher-manager/src/main/resources/templates/customers/create-form.html b/voucher-manager/src/main/resources/templates/customers/create-form.html index 6d833e2002..455b09194c 100644 --- a/voucher-manager/src/main/resources/templates/customers/create-form.html +++ b/voucher-manager/src/main/resources/templates/customers/create-form.html @@ -1,17 +1,25 @@ - + Create Customer + + -

Create New Customer

+
+

Create New Customer

-
-
-
-
-
- -
+
+
+ + +
+
+ + +
+ +
+
diff --git a/voucher-manager/src/main/resources/templates/customers/list.html b/voucher-manager/src/main/resources/templates/customers/list.html index 92f76243ae..6adb486052 100644 --- a/voucher-manager/src/main/resources/templates/customers/list.html +++ b/voucher-manager/src/main/resources/templates/customers/list.html @@ -2,26 +2,30 @@ Customer List + + -

Customer List

+
+

Customer List

-
Create New Customer -Get Owned Vouchers + Create New Customer + Get Owned Vouchers - - - - - - - - - - - - - -
EmailNickname
+ + + + + + + + + + + + + +
EmailNickname
+
diff --git a/voucher-manager/src/main/resources/templates/customers/owned-vouchers-form.html b/voucher-manager/src/main/resources/templates/customers/owned-vouchers-form.html index 94aacdd954..18b0914909 100644 --- a/voucher-manager/src/main/resources/templates/customers/owned-vouchers-form.html +++ b/voucher-manager/src/main/resources/templates/customers/owned-vouchers-form.html @@ -1,15 +1,21 @@ - + Get Owned Vouchers + + -

Get Owned Vouchers by Customer

+
+

Get Owned Vouchers by Customer

-
-
-
- -
+
+
+ + +
+ +
+
diff --git a/voucher-manager/src/main/resources/templates/customers/owned-vouchers-list.html b/voucher-manager/src/main/resources/templates/customers/owned-vouchers-list.html index e1e376de08..54dc1b3588 100644 --- a/voucher-manager/src/main/resources/templates/customers/owned-vouchers-list.html +++ b/voucher-manager/src/main/resources/templates/customers/owned-vouchers-list.html @@ -2,38 +2,46 @@ Owned Vouchers + + -

Owned Vouchers

- - - - - - - - - - - - - -
Voucher IdAction
-
- - - -
-
+
+

Owned Vouchers

-

Register a New Voucher

-
-
-
- - -
+ + + + + + + + + + + + + +
Voucher IdAction
+
+ + + +
+
-Get Customers List +

Register a New Voucher

+ +
+
+ + + +
+ +
+ + Get Customers List +