├── .editorconfig
├── .github
├── gifs
│ └── application.gif
├── images
│ ├── db_schema.png
│ ├── form1.png
│ ├── form2.png
│ ├── forms.png
│ ├── reports.png
│ └── spring_boot.png
└── workflows
│ ├── docker-image.yml
│ └── maven.yml
├── .gitignore
├── .mvn
└── wrapper
│ └── maven-wrapper.properties
├── LICENSE
├── README.md
├── code-rules
├── checkstyle
│ ├── checkstyle-suppressions.xml
│ └── checkstyle.xml
└── pmd
│ └── pmd-ruleSet.xml
├── docker-compose.yml
├── mvnw
├── mvnw.cmd
├── pom.xml
└── src
└── main
├── java
└── com
│ └── danielmichalski
│ └── reservations
│ ├── Application.java
│ ├── commons
│ ├── date
│ │ ├── DateFormatterService.java
│ │ └── DateFormatterServiceImpl.java
│ ├── entity
│ │ └── BaseEntity.java
│ ├── time
│ │ ├── CurrentTimeService.java
│ │ └── CurrentTimeServiceImpl.java
│ └── validation
│ │ ├── ValidationError.java
│ │ ├── ValidationSupport.java
│ │ └── Validator.java
│ ├── domain
│ ├── address
│ │ ├── entity
│ │ │ └── AddressEntity.java
│ │ ├── repository
│ │ │ └── AddressRepository.java
│ │ ├── service
│ │ │ ├── AddressService.java
│ │ │ └── AddressServiceImpl.java
│ │ └── validation
│ │ │ └── AddressValidator.java
│ ├── client
│ │ ├── dto
│ │ │ └── ClientReservationCountDto.java
│ │ ├── entity
│ │ │ └── ClientEntity.java
│ │ ├── repository
│ │ │ └── ClientRepository.java
│ │ ├── service
│ │ │ ├── ClientService.java
│ │ │ └── ClientServiceImpl.java
│ │ └── validation
│ │ │ └── ClientValidator.java
│ ├── payment
│ │ ├── dto
│ │ │ └── PaymentMethodCountDto.java
│ │ ├── entity
│ │ │ ├── PaymentEntity.java
│ │ │ └── PaymentMethodEntity.java
│ │ ├── repository
│ │ │ ├── PaymentMethodRepository.java
│ │ │ └── PaymentRepository.java
│ │ ├── service
│ │ │ ├── PaymentMethodService.java
│ │ │ ├── PaymentMethodServiceImpl.java
│ │ │ ├── PaymentService.java
│ │ │ └── PaymentServiceImpl.java
│ │ └── validation
│ │ │ ├── PaymentMethodValidator.java
│ │ │ └── PaymentValidator.java
│ ├── rate
│ │ ├── entity
│ │ │ └── RateEntity.java
│ │ ├── repository
│ │ │ └── RateRepository.java
│ │ ├── service
│ │ │ ├── RateService.java
│ │ │ └── RateServiceImpl.java
│ │ └── validation
│ │ │ └── RateValidator.java
│ ├── reservation
│ │ ├── entity
│ │ │ ├── ReservationEntity.java
│ │ │ └── ReservationStatusEntity.java
│ │ ├── repository
│ │ │ ├── ReservationRepository.java
│ │ │ └── ReservationStatusRepository.java
│ │ ├── service
│ │ │ ├── ReservationService.java
│ │ │ ├── ReservationServiceImpl.java
│ │ │ ├── ReservationStatusService.java
│ │ │ └── ReservationStatusServiceImpl.java
│ │ └── validation
│ │ │ ├── ReservationStatusValidator.java
│ │ │ └── ReservationValidator.java
│ └── room
│ │ ├── dto
│ │ └── RoomStatusesCountDto.java
│ │ ├── entity
│ │ ├── RoomEntity.java
│ │ ├── RoomStatusEntity.java
│ │ ├── RoomTypeEntity.java
│ │ ├── RoomXReservationEntity.java
│ │ └── RoomXReservationPK.java
│ │ ├── repository
│ │ ├── RoomRepository.java
│ │ ├── RoomStatusRepository.java
│ │ ├── RoomTypeRepository.java
│ │ └── RoomXReservationRepository.java
│ │ ├── service
│ │ ├── RoomService.java
│ │ ├── RoomServiceImpl.java
│ │ ├── RoomStatusService.java
│ │ ├── RoomStatusServiceImpl.java
│ │ ├── RoomTypeService.java
│ │ ├── RoomTypeServiceImpl.java
│ │ ├── RoomXReservationService.java
│ │ └── RoomXReservationServiceImpl.java
│ │ └── validation
│ │ ├── RoomStatusValidator.java
│ │ ├── RoomTypeValidator.java
│ │ ├── RoomValidator.java
│ │ └── RoomXReservationValidator.java
│ ├── ui
│ ├── forms
│ │ ├── address
│ │ │ ├── controller
│ │ │ │ └── AddressController.java
│ │ │ ├── model
│ │ │ │ └── AddressTableModel.java
│ │ │ └── view
│ │ │ │ ├── AddressTableBtnPanel.java
│ │ │ │ ├── AddressTableFrame.java
│ │ │ │ ├── AddressTablePanel.java
│ │ │ │ └── modal
│ │ │ │ ├── AddAddressFrame.java
│ │ │ │ ├── AddressFormBtnPanel.java
│ │ │ │ └── AddressFormPanel.java
│ │ ├── client
│ │ │ ├── controller
│ │ │ │ └── ClientController.java
│ │ │ ├── model
│ │ │ │ ├── AddressComboBoxModel.java
│ │ │ │ └── ClientTableModel.java
│ │ │ └── view
│ │ │ │ ├── ClientFrame.java
│ │ │ │ ├── ClientTablePanel.java
│ │ │ │ ├── TableBtnPanel.java
│ │ │ │ └── modal
│ │ │ │ ├── AddClientFrame.java
│ │ │ │ ├── FormBtnPanel.java
│ │ │ │ └── FormPanel.java
│ │ ├── forms
│ │ │ ├── controller
│ │ │ │ └── FormsController.java
│ │ │ └── view
│ │ │ │ └── FormsFrame.java
│ │ ├── payment
│ │ │ ├── controller
│ │ │ │ └── PaymentController.java
│ │ │ ├── model
│ │ │ │ ├── PaymentMethodComboBoxModel.java
│ │ │ │ └── PaymentTableModel.java
│ │ │ └── view
│ │ │ │ ├── PaymentTableBtnPanel.java
│ │ │ │ ├── PaymentTableFrame.java
│ │ │ │ ├── PaymentTablePanel.java
│ │ │ │ └── modal
│ │ │ │ ├── AddPaymentFrame.java
│ │ │ │ ├── PaymentFormBtnPanel.java
│ │ │ │ └── PaymentFormPanel.java
│ │ ├── paymentmethod
│ │ │ ├── controller
│ │ │ │ └── PaymentMethodController.java
│ │ │ ├── model
│ │ │ │ └── PaymentMethodTableModel.java
│ │ │ └── view
│ │ │ │ ├── PaymentMethodTableBtnPanel.java
│ │ │ │ ├── PaymentMethodTableFrame.java
│ │ │ │ ├── PaymentMethodTablePanel.java
│ │ │ │ └── modal
│ │ │ │ ├── AddPaymentMethodFrame.java
│ │ │ │ ├── PaymentMethodFormBtnPanel.java
│ │ │ │ └── PaymentMethodFormPanel.java
│ │ ├── rate
│ │ │ ├── controller
│ │ │ │ └── RateController.java
│ │ │ ├── model
│ │ │ │ ├── RateTableModel.java
│ │ │ │ ├── RoomComboBoxModel.java
│ │ │ │ └── RoomTypeComboBoxModel.java
│ │ │ └── view
│ │ │ │ ├── RateTableBtnPanel.java
│ │ │ │ ├── RateTableFrame.java
│ │ │ │ ├── RateTablePanel.java
│ │ │ │ └── modal
│ │ │ │ ├── AddRateFame.java
│ │ │ │ ├── RateFormBtnPanel.java
│ │ │ │ └── RateFormPanel.java
│ │ ├── reservation
│ │ │ ├── controller
│ │ │ │ └── ReservationController.java
│ │ │ ├── model
│ │ │ │ ├── ClientComboBoxModel.java
│ │ │ │ ├── PaymentComboBoxModel.java
│ │ │ │ ├── ReservationStatusComboBoxModel.java
│ │ │ │ └── ReservationTableModel.java
│ │ │ └── view
│ │ │ │ ├── ReservationTableBtnPanel.java
│ │ │ │ ├── ReservationTableFrame.java
│ │ │ │ ├── ReservationTablePanel.java
│ │ │ │ └── modal
│ │ │ │ ├── AddReservationFrame.java
│ │ │ │ ├── ReservationFormBtnPanel.java
│ │ │ │ └── ReservationFormPanel.java
│ │ ├── reservationstatus
│ │ │ ├── controller
│ │ │ │ └── ReservationStatusController.java
│ │ │ ├── model
│ │ │ │ └── ReservationStatusTableModel.java
│ │ │ └── view
│ │ │ │ ├── ReservationStatusTableBtnPanel.java
│ │ │ │ ├── ReservationStatusTableFrame.java
│ │ │ │ ├── ReservationStatusTablePanel.java
│ │ │ │ └── modal
│ │ │ │ ├── AddReservationStatusFrame.java
│ │ │ │ ├── ReservationStatusFormBtnPanel.java
│ │ │ │ └── ReservationStatusFormPanel.java
│ │ ├── room
│ │ │ ├── controller
│ │ │ │ └── RoomController.java
│ │ │ ├── model
│ │ │ │ ├── RoomStatusComboBoxModel.java
│ │ │ │ └── RoomTableModel.java
│ │ │ └── view
│ │ │ │ ├── RoomTableBtnPanel.java
│ │ │ │ ├── RoomTableFrame.java
│ │ │ │ ├── RoomTablePanel.java
│ │ │ │ └── modal
│ │ │ │ ├── AddRoomFrame.java
│ │ │ │ ├── RoomFormBtnPanel.java
│ │ │ │ └── RoomFormPanel.java
│ │ ├── roomstatus
│ │ │ ├── controller
│ │ │ │ └── RoomStatusController.java
│ │ │ ├── model
│ │ │ │ └── RoomStatusTableModel.java
│ │ │ └── view
│ │ │ │ ├── RoomStatusTableBtnPanel.java
│ │ │ │ ├── RoomStatusTableFrame.java
│ │ │ │ ├── RoomStatusTablePanel.java
│ │ │ │ └── modal
│ │ │ │ ├── AddRoomStatusFrame.java
│ │ │ │ ├── RoomStatusFormBtnPanel.java
│ │ │ │ └── RoomStatusFormPanel.java
│ │ ├── roomtype
│ │ │ ├── controller
│ │ │ │ └── RoomTypeController.java
│ │ │ ├── model
│ │ │ │ └── RoomTypeTableModel.java
│ │ │ └── view
│ │ │ │ ├── RoomTypeTableBtnPanel.java
│ │ │ │ ├── RoomTypeTableFrame.java
│ │ │ │ ├── RoomTypeTablePanel.java
│ │ │ │ └── modal
│ │ │ │ ├── AddRoomTypeFrame.java
│ │ │ │ ├── RoomTypeFormBtnPanel.java
│ │ │ │ └── RoomTypeFormPanel.java
│ │ └── roomxreservation
│ │ │ ├── controller
│ │ │ └── RoomXReservationController.java
│ │ │ ├── model
│ │ │ ├── ReservationsComboBoxModel.java
│ │ │ └── RoomXReservationTableModel.java
│ │ │ └── view
│ │ │ ├── RoomXReservationTableBtnPanel.java
│ │ │ ├── RoomXReservationTableFrame.java
│ │ │ ├── RoomXReservationTablePanel.java
│ │ │ └── modal
│ │ │ ├── AddRoomXReservationFame.java
│ │ │ ├── RoomXReservationFormBtnPanel.java
│ │ │ └── RoomXReservationFormPanel.java
│ ├── mainmenu
│ │ ├── controller
│ │ │ └── MainMenuController.java
│ │ └── view
│ │ │ └── MainMenuFrame.java
│ ├── reports
│ │ ├── clientreservations
│ │ │ ├── controller
│ │ │ │ └── ClientReservationsReportController.java
│ │ │ ├── model
│ │ │ │ └── ClientReservationsReportModel.java
│ │ │ └── view
│ │ │ │ ├── ClientReservationsReportTableFrame.java
│ │ │ │ └── ClientReservationsReportTablePanel.java
│ │ ├── payments
│ │ │ ├── controller
│ │ │ │ └── PaymentReportController.java
│ │ │ ├── model
│ │ │ │ └── PaymentReportModel.java
│ │ │ └── view
│ │ │ │ ├── PaymentReportTableFrame.java
│ │ │ │ └── PaymentReportTablePanel.java
│ │ ├── reports
│ │ │ ├── controller
│ │ │ │ └── ReportsController.java
│ │ │ └── view
│ │ │ │ └── ReportsFrame.java
│ │ └── roomstatuses
│ │ │ ├── controller
│ │ │ └── RoomStatusReportController.java
│ │ │ ├── model
│ │ │ └── RoomStatusReportModel.java
│ │ │ └── view
│ │ │ ├── RoomStatusReportTableFrame.java
│ │ │ └── RoomStatusReportTablePanel.java
│ └── shared
│ │ ├── controller
│ │ └── AbstractFrameController.java
│ │ └── model
│ │ ├── DefaultAbstractComboBoxModel.java
│ │ └── DefaultTableModel.java
│ └── util
│ ├── annotation
│ ├── TransactionalReadOnly.java
│ └── TransactionalWrite.java
│ ├── border
│ └── Borders.java
│ ├── constant
│ ├── ConstMessagesEN.java
│ └── ConstMessagesPL.java
│ ├── notification
│ └── Notifications.java
│ └── ui
│ └── LookAndFeelUtils.java
└── resources
├── application.yml
├── banner.txt
└── db
├── data
└── test
│ ├── csv
│ ├── address.csv
│ ├── client.csv
│ ├── payment.csv
│ ├── payment_method.csv
│ ├── rate.csv
│ ├── reservation.csv
│ ├── reservation_status.csv
│ ├── room.csv
│ ├── room_status.csv
│ ├── room_type.csv
│ └── room_x_reservation.csv
│ └── liquibase-changelog-test-data.xml
├── functions
└── liquibase-changelog-functions.xml
├── liquibase-changelog-master.xml
├── schema
└── liquibase-changelog-schema.xml
└── views
└── liquibase-changelog-views.xml
/.github/gifs/application.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielMichalski/spring-boot-java-swing-reservations/b0e5b27f09f2303f036f2d973a8c508dffa2e26b/.github/gifs/application.gif
--------------------------------------------------------------------------------
/.github/images/db_schema.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielMichalski/spring-boot-java-swing-reservations/b0e5b27f09f2303f036f2d973a8c508dffa2e26b/.github/images/db_schema.png
--------------------------------------------------------------------------------
/.github/images/form1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielMichalski/spring-boot-java-swing-reservations/b0e5b27f09f2303f036f2d973a8c508dffa2e26b/.github/images/form1.png
--------------------------------------------------------------------------------
/.github/images/form2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielMichalski/spring-boot-java-swing-reservations/b0e5b27f09f2303f036f2d973a8c508dffa2e26b/.github/images/form2.png
--------------------------------------------------------------------------------
/.github/images/forms.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielMichalski/spring-boot-java-swing-reservations/b0e5b27f09f2303f036f2d973a8c508dffa2e26b/.github/images/forms.png
--------------------------------------------------------------------------------
/.github/images/reports.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielMichalski/spring-boot-java-swing-reservations/b0e5b27f09f2303f036f2d973a8c508dffa2e26b/.github/images/reports.png
--------------------------------------------------------------------------------
/.github/images/spring_boot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DanielMichalski/spring-boot-java-swing-reservations/b0e5b27f09f2303f036f2d973a8c508dffa2e26b/.github/images/spring_boot.png
--------------------------------------------------------------------------------
/.github/workflows/docker-image.yml:
--------------------------------------------------------------------------------
1 | name: Docker Image CI
2 |
3 | on:
4 | push:
5 | branches: [ master ]
6 | pull_request:
7 | branches: [ master ]
8 |
9 | jobs:
10 |
11 | build:
12 |
13 | runs-on: ubuntu-latest
14 |
15 | steps:
16 | - uses: actions/checkout@v2
17 | - name: Build the Docker image
18 | run: docker-compose build
19 |
--------------------------------------------------------------------------------
/.github/workflows/maven.yml:
--------------------------------------------------------------------------------
1 | # This workflow will build a Java project with Maven, and cache/restore any dependencies to improve the workflow execution time
2 | # For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-java-with-maven
3 |
4 | # This workflow uses actions that are not certified by GitHub.
5 | # They are provided by a third-party and are governed by
6 | # separate terms of service, privacy policy, and support
7 | # documentation.
8 |
9 | name: Java CI with Maven
10 |
11 | on:
12 | push:
13 | branches: [ "master" ]
14 | pull_request:
15 | branches: [ "master" ]
16 |
17 | jobs:
18 | build:
19 |
20 | runs-on: ubuntu-latest
21 |
22 | steps:
23 | - uses: actions/checkout@v3
24 | - name: Set up JDK 17
25 | uses: actions/setup-java@v3
26 | with:
27 | java-version: '17'
28 | distribution: 'temurin'
29 | cache: maven
30 | - name: Build with Maven
31 | run: mvn -B package --file pom.xml
32 |
33 | # Optional: Uploads the full dependency graph to GitHub to improve the quality of Dependabot alerts this repository can receive
34 | - name: Update dependency graph
35 | uses: advanced-security/maven-dependency-submission-action@571e99aab1055c2e71a1e2309b9691de18d6b7d6
36 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .idea
2 | .mvn/wrapper/maven-wrapper.jar
3 | *.iml
4 | target
5 |
--------------------------------------------------------------------------------
/.mvn/wrapper/maven-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.6/apache-maven-3.9.6-bin.zip
2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar
3 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2020 Daniel Michalski
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/code-rules/checkstyle/checkstyle-suppressions.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/code-rules/pmd/pmd-ruleSet.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | PMD RuleSet
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/docker-compose.yml:
--------------------------------------------------------------------------------
1 | version: '3.8'
2 |
3 | services:
4 | reservations-db:
5 | container_name: reservations-db
6 | image: postgres:16.1
7 | ports:
8 | - '5555:5432'
9 | environment:
10 | POSTGRES_DB: reservations
11 | POSTGRES_USER: reservations_user
12 | POSTGRES_PASSWORD: reservations_psw
13 | restart:
14 | unless-stopped
15 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/Application.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations;
2 |
3 | import com.danielmichalski.reservations.ui.mainmenu.controller.MainMenuController;
4 | import com.danielmichalski.reservations.util.ui.LookAndFeelUtils;
5 | import org.springframework.boot.autoconfigure.SpringBootApplication;
6 | import org.springframework.boot.builder.SpringApplicationBuilder;
7 | import org.springframework.context.ConfigurableApplicationContext;
8 |
9 | import javax.swing.SwingUtilities;
10 |
11 | @SpringBootApplication
12 | public class Application {
13 |
14 | public static void main(String... args) {
15 | LookAndFeelUtils.setWindowsLookAndFeel();
16 | ConfigurableApplicationContext context = createApplicationContext(args);
17 | displayMainFrame(context);
18 | }
19 |
20 | private static ConfigurableApplicationContext createApplicationContext(String... args) {
21 | return new SpringApplicationBuilder(Application.class)
22 | .headless(false)
23 | .run(args);
24 | }
25 |
26 | private static void displayMainFrame(ConfigurableApplicationContext context) {
27 | SwingUtilities.invokeLater(() -> {
28 | MainMenuController mainMenuController = context.getBean(MainMenuController.class);
29 | mainMenuController.prepareAndOpenFrame();
30 | });
31 | }
32 |
33 | }
34 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/commons/date/DateFormatterService.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.commons.date;
2 |
3 | import java.util.Date;
4 |
5 | public interface DateFormatterService {
6 |
7 | String formatDate(Date date);
8 |
9 | }
10 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/commons/date/DateFormatterServiceImpl.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.commons.date;
2 |
3 | import org.springframework.stereotype.Service;
4 |
5 | import java.text.SimpleDateFormat;
6 | import java.util.Date;
7 |
8 | @Service
9 | class DateFormatterServiceImpl implements DateFormatterService {
10 |
11 | private static final String DEFAULT_DATE_FORMAT = "dd-MM-yyyy";
12 |
13 | @Override
14 | public String formatDate(Date date) {
15 | SimpleDateFormat formatter = new SimpleDateFormat(DEFAULT_DATE_FORMAT);
16 | return formatter.format(date);
17 | }
18 |
19 | }
20 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/commons/entity/BaseEntity.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.commons.entity;
2 |
3 | import jakarta.persistence.GeneratedValue;
4 | import jakarta.persistence.GenerationType;
5 | import jakarta.persistence.Id;
6 | import jakarta.persistence.MappedSuperclass;
7 | import lombok.Getter;
8 |
9 | import java.io.Serializable;
10 |
11 | @MappedSuperclass
12 | @Getter
13 | public abstract class BaseEntity implements Serializable {
14 |
15 | @Id
16 | @GeneratedValue(strategy = GenerationType.IDENTITY)
17 | private Long id;
18 |
19 | }
20 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/commons/time/CurrentTimeService.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.commons.time;
2 |
3 | import java.util.Date;
4 |
5 | public interface CurrentTimeService {
6 |
7 | Date getCurrentDate();
8 |
9 | }
10 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/commons/time/CurrentTimeServiceImpl.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.commons.time;
2 |
3 | import org.springframework.stereotype.Service;
4 |
5 | import java.util.Date;
6 |
7 | @Service
8 | class CurrentTimeServiceImpl implements CurrentTimeService {
9 |
10 | @Override
11 | public Date getCurrentDate() {
12 | return new Date();
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/commons/validation/ValidationError.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.commons.validation;
2 |
3 | public record ValidationError(String message) {
4 |
5 | }
6 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/commons/validation/ValidationSupport.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.commons.validation;
2 |
3 | @SuppressWarnings("PMD.AbstractClassWithoutAbstractMethod")
4 | public abstract class ValidationSupport {
5 |
6 | protected boolean isNullOrEmptyString(String value) {
7 | return value == null || value.isEmpty();
8 | }
9 |
10 | protected boolean isNullValue(Object value) {
11 | return value == null;
12 | }
13 |
14 | protected boolean isValueNotGreaterThanZero(Long value) {
15 | return isNullValue(value) || value <= 0;
16 | }
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/commons/validation/Validator.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.commons.validation;
2 |
3 | import java.util.Optional;
4 |
5 | public interface Validator {
6 |
7 | Optional validate(K k);
8 |
9 | }
10 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/domain/address/entity/AddressEntity.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.domain.address.entity;
2 |
3 | import com.danielmichalski.reservations.commons.entity.BaseEntity;
4 | import jakarta.persistence.Entity;
5 | import jakarta.persistence.Table;
6 | import lombok.AccessLevel;
7 | import lombok.AllArgsConstructor;
8 | import lombok.Getter;
9 | import lombok.NoArgsConstructor;
10 |
11 | @Entity
12 | @Table(name = "address")
13 | @AllArgsConstructor
14 | @NoArgsConstructor(access = AccessLevel.PROTECTED)
15 | @Getter
16 | public class AddressEntity extends BaseEntity {
17 |
18 | private String street;
19 |
20 | private String houseNumber;
21 |
22 | private String flatNumber;
23 |
24 | private String city;
25 |
26 | private String postalCode;
27 |
28 | @Override
29 | public String toString() {
30 | return street + " "
31 | + houseNumber
32 | + "/" + flatNumber + " "
33 | + city + " "
34 | + postalCode;
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/domain/address/repository/AddressRepository.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.domain.address.repository;
2 |
3 | import com.danielmichalski.reservations.domain.address.entity.AddressEntity;
4 | import org.springframework.data.jpa.repository.JpaRepository;
5 | import org.springframework.stereotype.Repository;
6 |
7 | @Repository
8 | public interface AddressRepository extends JpaRepository {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/domain/address/service/AddressService.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.domain.address.service;
2 |
3 | import com.danielmichalski.reservations.domain.address.entity.AddressEntity;
4 | import com.danielmichalski.reservations.util.annotation.TransactionalReadOnly;
5 | import com.danielmichalski.reservations.util.annotation.TransactionalWrite;
6 |
7 | import java.util.List;
8 |
9 | public interface AddressService {
10 |
11 | @TransactionalReadOnly
12 | List findAll();
13 |
14 | @TransactionalWrite
15 | void remove(AddressEntity address);
16 |
17 | @TransactionalWrite
18 | void save(AddressEntity address);
19 | }
20 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/domain/address/service/AddressServiceImpl.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.domain.address.service;
2 |
3 | import com.danielmichalski.reservations.domain.address.entity.AddressEntity;
4 | import com.danielmichalski.reservations.domain.address.repository.AddressRepository;
5 | import lombok.AllArgsConstructor;
6 | import org.springframework.stereotype.Service;
7 |
8 | import java.util.List;
9 |
10 | @Service
11 | @AllArgsConstructor
12 | class AddressServiceImpl implements AddressService {
13 |
14 | private final AddressRepository addressRepository;
15 |
16 | @Override
17 | public List findAll() {
18 | return addressRepository.findAll();
19 | }
20 |
21 | @Override
22 | public void remove(AddressEntity address) {
23 | addressRepository.delete(address);
24 | }
25 |
26 | @Override
27 | public void save(AddressEntity address) {
28 | addressRepository.save(address);
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/domain/address/validation/AddressValidator.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.domain.address.validation;
2 |
3 | import com.danielmichalski.reservations.commons.validation.ValidationError;
4 | import com.danielmichalski.reservations.commons.validation.ValidationSupport;
5 | import com.danielmichalski.reservations.commons.validation.Validator;
6 | import com.danielmichalski.reservations.domain.address.entity.AddressEntity;
7 | import org.springframework.stereotype.Component;
8 |
9 | import java.util.Optional;
10 |
11 | import static com.danielmichalski.reservations.util.constant.ConstMessagesEN.ValidationMessages.REQUIRED_DATA_NOT_FILLED_OR_BAD_DATA;
12 |
13 | @Component
14 | public class AddressValidator extends ValidationSupport implements Validator {
15 |
16 | @Override
17 | public Optional validate(AddressEntity address) {
18 | if (isNullOrEmptyString(address.getStreet())
19 | || isNullOrEmptyString(address.getHouseNumber())
20 | || isNullOrEmptyString(address.getFlatNumber())
21 | || isNullOrEmptyString(address.getCity())
22 | || isNullOrEmptyString(address.getPostalCode())) {
23 | return Optional.of(new ValidationError(REQUIRED_DATA_NOT_FILLED_OR_BAD_DATA));
24 | }
25 | return Optional.empty();
26 | }
27 |
28 | }
29 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/domain/client/dto/ClientReservationCountDto.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.domain.client.dto;
2 |
3 | public record ClientReservationCountDto(String name, String email, long count) {
4 |
5 | }
6 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/domain/client/entity/ClientEntity.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.domain.client.entity;
2 |
3 | import com.danielmichalski.reservations.commons.entity.BaseEntity;
4 | import com.danielmichalski.reservations.domain.address.entity.AddressEntity;
5 | import jakarta.persistence.Entity;
6 | import jakarta.persistence.JoinColumn;
7 | import jakarta.persistence.ManyToOne;
8 | import jakarta.persistence.Table;
9 | import lombok.AccessLevel;
10 | import lombok.AllArgsConstructor;
11 | import lombok.Getter;
12 | import lombok.NoArgsConstructor;
13 |
14 | @Entity
15 | @Table(name = "client")
16 | @AllArgsConstructor
17 | @NoArgsConstructor(access = AccessLevel.PROTECTED)
18 | @Getter
19 | public class ClientEntity extends BaseEntity {
20 |
21 | @ManyToOne
22 | @JoinColumn(name = "address_id")
23 | private AddressEntity address;
24 |
25 | private String name;
26 |
27 | private String surname;
28 |
29 | private String pesel;
30 |
31 | private String phoneNumber;
32 |
33 | private String email;
34 |
35 | @Override
36 | public String toString() {
37 | return name + " " + surname;
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/domain/client/repository/ClientRepository.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.domain.client.repository;
2 |
3 | import com.danielmichalski.reservations.domain.client.entity.ClientEntity;
4 | import org.springframework.data.jpa.repository.JpaRepository;
5 | import org.springframework.data.jpa.repository.Query;
6 | import org.springframework.stereotype.Repository;
7 |
8 | @Repository
9 | public interface ClientRepository extends JpaRepository {
10 |
11 | @Query("""
12 | SELECT CONCAT(c.name, ' ', c.surname) AS name, c.email AS email, COUNT(r.id) AS count
13 | FROM ReservationEntity r JOIN r.client c
14 | GROUP BY c.id
15 | HAVING COUNT (r.id) >= 3
16 | """
17 | )
18 | Object[][] getClientReservationsCount();
19 |
20 | }
21 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/domain/client/service/ClientService.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.domain.client.service;
2 |
3 | import com.danielmichalski.reservations.domain.client.dto.ClientReservationCountDto;
4 | import com.danielmichalski.reservations.domain.client.entity.ClientEntity;
5 | import com.danielmichalski.reservations.util.annotation.TransactionalReadOnly;
6 | import com.danielmichalski.reservations.util.annotation.TransactionalWrite;
7 |
8 | import java.util.List;
9 |
10 | public interface ClientService {
11 |
12 | @TransactionalReadOnly
13 | List findAll();
14 |
15 | @TransactionalWrite
16 | void save(ClientEntity client);
17 |
18 | @TransactionalWrite
19 | void remove(ClientEntity client);
20 |
21 | @TransactionalReadOnly
22 | List getClientReservationsCount();
23 | }
24 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/domain/client/service/ClientServiceImpl.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.domain.client.service;
2 |
3 | import com.danielmichalski.reservations.domain.client.dto.ClientReservationCountDto;
4 | import com.danielmichalski.reservations.domain.client.entity.ClientEntity;
5 | import com.danielmichalski.reservations.domain.client.repository.ClientRepository;
6 | import lombok.AllArgsConstructor;
7 | import org.springframework.stereotype.Service;
8 |
9 | import java.util.List;
10 | import java.util.stream.Stream;
11 |
12 | import static java.util.stream.Collectors.toList;
13 |
14 | @Service
15 | @AllArgsConstructor
16 | class ClientServiceImpl implements ClientService {
17 |
18 | public static final int NAME_INDEX = 0;
19 | public static final int EMAIL_INDEX = 1;
20 | public static final int COUNT_INDEX = 2;
21 |
22 | private final ClientRepository clientRepository;
23 |
24 | @Override
25 | public List findAll() {
26 | return clientRepository.findAll();
27 | }
28 |
29 | @Override
30 | public void save(ClientEntity client) {
31 | clientRepository.save(client);
32 | }
33 |
34 | @Override
35 | public void remove(ClientEntity client) {
36 | clientRepository.delete(client);
37 | }
38 |
39 | @Override
40 | public List getClientReservationsCount() {
41 | Object[][] clientReservationsCount = clientRepository.getClientReservationsCount();
42 | return Stream.of(clientReservationsCount)
43 | .map(this::convertToClientReservationCountDto)
44 | .collect(toList());
45 | }
46 |
47 | private ClientReservationCountDto convertToClientReservationCountDto(Object... crc) {
48 | String name = (String) crc[NAME_INDEX];
49 | String email = (String) crc[EMAIL_INDEX];
50 | long count = (long) crc[COUNT_INDEX];
51 | return new ClientReservationCountDto(name, email, count);
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/domain/client/validation/ClientValidator.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.domain.client.validation;
2 |
3 | import com.danielmichalski.reservations.commons.validation.ValidationError;
4 | import com.danielmichalski.reservations.commons.validation.ValidationSupport;
5 | import com.danielmichalski.reservations.commons.validation.Validator;
6 | import com.danielmichalski.reservations.domain.client.entity.ClientEntity;
7 | import org.springframework.stereotype.Component;
8 |
9 | import java.util.Optional;
10 |
11 | import static com.danielmichalski.reservations.util.constant.ConstMessagesEN.ValidationMessages.PESEL_LENGTH_INCORRECT;
12 | import static com.danielmichalski.reservations.util.constant.ConstMessagesEN.ValidationMessages.REQUIRED_DATA_NOT_FILLED_OR_BAD_DATA;
13 |
14 | @Component
15 | public class ClientValidator extends ValidationSupport implements Validator {
16 |
17 | private static final int PESEL_LENGTH = 11;
18 |
19 | @Override
20 | public Optional validate(ClientEntity client) {
21 | if (isNullOrEmptyString(client.getName())
22 | || isNullOrEmptyString(client.getSurname())
23 | || isNullOrEmptyString(client.getPesel())
24 | || isNullOrEmptyString(client.getPhoneNumber())
25 | || isNullOrEmptyString(client.getEmail())
26 | || isNullValue(client.getAddress())) {
27 | return Optional.of(new ValidationError(REQUIRED_DATA_NOT_FILLED_OR_BAD_DATA));
28 | }
29 | if (PESEL_LENGTH != client.getPesel().length()) {
30 | return Optional.of(new ValidationError(PESEL_LENGTH_INCORRECT));
31 | }
32 | return Optional.empty();
33 | }
34 |
35 | }
36 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/domain/payment/dto/PaymentMethodCountDto.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.domain.payment.dto;
2 |
3 | public record PaymentMethodCountDto(String name, long count) {
4 |
5 | }
6 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/domain/payment/entity/PaymentEntity.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.domain.payment.entity;
2 |
3 | import com.danielmichalski.reservations.commons.entity.BaseEntity;
4 | import jakarta.persistence.Entity;
5 | import jakarta.persistence.JoinColumn;
6 | import jakarta.persistence.ManyToOne;
7 | import jakarta.persistence.Table;
8 | import lombok.AccessLevel;
9 | import lombok.Getter;
10 | import lombok.NoArgsConstructor;
11 | import org.apache.logging.log4j.util.Strings;
12 |
13 | import java.util.Date;
14 |
15 | @Entity
16 | @Table(name = "payment")
17 | @NoArgsConstructor(access = AccessLevel.PROTECTED)
18 | @Getter
19 | public class PaymentEntity extends BaseEntity {
20 |
21 | @ManyToOne
22 | @JoinColumn(name = "payment_method_id")
23 | private PaymentMethodEntity paymentMethod;
24 |
25 | private Long value;
26 |
27 | private Date dateOfPayment;
28 |
29 | public PaymentEntity(PaymentMethodEntity paymentMethod,
30 | Long value,
31 | Date dateOfPayment) {
32 | this.paymentMethod = paymentMethod;
33 | this.value = value;
34 | this.dateOfPayment = new Date(dateOfPayment.getTime());
35 | }
36 |
37 | @Override
38 | public String toString() {
39 | return paymentMethod + Strings.EMPTY;
40 | }
41 |
42 | public Date getDateOfPayment() {
43 | return new Date(dateOfPayment.getTime());
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/domain/payment/entity/PaymentMethodEntity.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.domain.payment.entity;
2 |
3 | import com.danielmichalski.reservations.commons.entity.BaseEntity;
4 | import jakarta.persistence.Entity;
5 | import jakarta.persistence.Table;
6 | import lombok.AccessLevel;
7 | import lombok.AllArgsConstructor;
8 | import lombok.Getter;
9 | import lombok.NoArgsConstructor;
10 |
11 | @Entity
12 | @Table(name = "payment_method")
13 | @AllArgsConstructor
14 | @NoArgsConstructor(access = AccessLevel.PROTECTED)
15 | @Getter
16 | public class PaymentMethodEntity extends BaseEntity {
17 |
18 | private String name;
19 |
20 | @Override
21 | public String toString() {
22 | return name;
23 | }
24 |
25 | }
26 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/domain/payment/repository/PaymentMethodRepository.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.domain.payment.repository;
2 |
3 | import com.danielmichalski.reservations.domain.payment.entity.PaymentMethodEntity;
4 | import org.springframework.data.jpa.repository.JpaRepository;
5 | import org.springframework.data.jpa.repository.Query;
6 | import org.springframework.stereotype.Repository;
7 |
8 | @Repository
9 | public interface PaymentMethodRepository extends JpaRepository {
10 |
11 | @Query("""
12 | SELECT pm.name AS name, COUNT(p.id) AS count
13 | FROM PaymentEntity p
14 | JOIN p.paymentMethod pm
15 | GROUP BY pm.name
16 | """
17 | )
18 | Object[][] getPaymentMethodCount();
19 |
20 | }
21 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/domain/payment/repository/PaymentRepository.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.domain.payment.repository;
2 |
3 | import com.danielmichalski.reservations.domain.payment.entity.PaymentEntity;
4 | import org.springframework.data.jpa.repository.JpaRepository;
5 | import org.springframework.stereotype.Repository;
6 |
7 | @Repository
8 | public interface PaymentRepository extends JpaRepository {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/domain/payment/service/PaymentMethodService.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.domain.payment.service;
2 |
3 | import com.danielmichalski.reservations.domain.payment.dto.PaymentMethodCountDto;
4 | import com.danielmichalski.reservations.domain.payment.entity.PaymentMethodEntity;
5 | import com.danielmichalski.reservations.util.annotation.TransactionalReadOnly;
6 | import com.danielmichalski.reservations.util.annotation.TransactionalWrite;
7 |
8 | import java.util.List;
9 |
10 | public interface PaymentMethodService {
11 |
12 | @TransactionalReadOnly
13 | List findAll();
14 |
15 | @TransactionalWrite
16 | void remove(PaymentMethodEntity paymentMethod);
17 |
18 | @TransactionalWrite
19 | void save(PaymentMethodEntity paymentMethod);
20 |
21 | @TransactionalReadOnly
22 | List getPaymentMethodCount();
23 | }
24 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/domain/payment/service/PaymentMethodServiceImpl.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.domain.payment.service;
2 |
3 | import com.danielmichalski.reservations.domain.payment.dto.PaymentMethodCountDto;
4 | import com.danielmichalski.reservations.domain.payment.entity.PaymentMethodEntity;
5 | import com.danielmichalski.reservations.domain.payment.repository.PaymentMethodRepository;
6 | import lombok.AllArgsConstructor;
7 | import org.springframework.stereotype.Service;
8 |
9 | import java.util.List;
10 | import java.util.stream.Collectors;
11 | import java.util.stream.Stream;
12 |
13 | @Service
14 | @AllArgsConstructor
15 | class PaymentMethodServiceImpl implements PaymentMethodService {
16 |
17 | public static final int NAME_INDEX = 0;
18 | public static final int COUNT_INDEX = 1;
19 |
20 | private final PaymentMethodRepository paymentMethodRepository;
21 |
22 | @Override
23 | public List findAll() {
24 | return paymentMethodRepository.findAll();
25 | }
26 |
27 | @Override
28 | public void remove(PaymentMethodEntity paymentMethod) {
29 | paymentMethodRepository.delete(paymentMethod);
30 | }
31 |
32 | @Override
33 | public void save(PaymentMethodEntity paymentMethod) {
34 | paymentMethodRepository.save(paymentMethod);
35 | }
36 |
37 | @Override
38 | public List getPaymentMethodCount() {
39 | Object[][] paymentMethodCount = paymentMethodRepository.getPaymentMethodCount();
40 | return Stream.of(paymentMethodCount)
41 | .map(this::convertToPaymentMethodCountDto)
42 | .collect(Collectors.toList());
43 | }
44 |
45 | private PaymentMethodCountDto convertToPaymentMethodCountDto(Object... pmc) {
46 | String name = (String) pmc[NAME_INDEX];
47 | long count = (long) pmc[COUNT_INDEX];
48 | return new PaymentMethodCountDto(name, count);
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/domain/payment/service/PaymentService.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.domain.payment.service;
2 |
3 | import com.danielmichalski.reservations.domain.payment.entity.PaymentEntity;
4 | import com.danielmichalski.reservations.util.annotation.TransactionalReadOnly;
5 | import com.danielmichalski.reservations.util.annotation.TransactionalWrite;
6 |
7 | import java.util.List;
8 |
9 | public interface PaymentService {
10 |
11 | @TransactionalReadOnly
12 | List findAll();
13 |
14 | @TransactionalWrite
15 | void remove(PaymentEntity payment);
16 |
17 | @TransactionalWrite
18 | void save(PaymentEntity payment);
19 | }
20 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/domain/payment/service/PaymentServiceImpl.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.domain.payment.service;
2 |
3 | import com.danielmichalski.reservations.domain.payment.entity.PaymentEntity;
4 | import com.danielmichalski.reservations.domain.payment.repository.PaymentRepository;
5 | import lombok.AllArgsConstructor;
6 | import org.springframework.stereotype.Service;
7 |
8 | import java.util.List;
9 |
10 | @Service
11 | @AllArgsConstructor
12 | class PaymentServiceImpl implements PaymentService {
13 |
14 | private final PaymentRepository paymentRepository;
15 |
16 | @Override
17 | public List findAll() {
18 | return paymentRepository.findAll();
19 | }
20 |
21 | @Override
22 | public void remove(PaymentEntity payment) {
23 | paymentRepository.delete(payment);
24 | }
25 |
26 | @Override
27 | public void save(PaymentEntity payment) {
28 | paymentRepository.save(payment);
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/domain/payment/validation/PaymentMethodValidator.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.domain.payment.validation;
2 |
3 | import com.danielmichalski.reservations.commons.validation.ValidationError;
4 | import com.danielmichalski.reservations.commons.validation.ValidationSupport;
5 | import com.danielmichalski.reservations.commons.validation.Validator;
6 | import com.danielmichalski.reservations.domain.payment.entity.PaymentMethodEntity;
7 | import org.springframework.stereotype.Component;
8 |
9 | import java.util.Optional;
10 |
11 | import static com.danielmichalski.reservations.util.constant.ConstMessagesEN.ValidationMessages.REQUIRED_DATA_NOT_FILLED_OR_BAD_DATA;
12 |
13 | @Component
14 | public class PaymentMethodValidator extends ValidationSupport implements Validator {
15 |
16 | @Override
17 | public Optional validate(PaymentMethodEntity paymentMethod) {
18 | if (isNullOrEmptyString(paymentMethod.getName())) {
19 | return Optional.of(new ValidationError(REQUIRED_DATA_NOT_FILLED_OR_BAD_DATA));
20 | }
21 | return Optional.empty();
22 | }
23 |
24 | }
25 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/domain/payment/validation/PaymentValidator.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.domain.payment.validation;
2 |
3 | import com.danielmichalski.reservations.commons.validation.ValidationError;
4 | import com.danielmichalski.reservations.commons.validation.ValidationSupport;
5 | import com.danielmichalski.reservations.commons.validation.Validator;
6 | import com.danielmichalski.reservations.domain.payment.entity.PaymentEntity;
7 | import org.springframework.stereotype.Component;
8 |
9 | import java.util.Optional;
10 |
11 | import static com.danielmichalski.reservations.util.constant.ConstMessagesEN.ValidationMessages.REQUIRED_DATA_NOT_FILLED_OR_BAD_DATA;
12 | import static java.util.Optional.empty;
13 |
14 | @Component
15 | public class PaymentValidator extends ValidationSupport implements Validator {
16 |
17 | @Override
18 | public Optional validate(PaymentEntity payment) {
19 | if (isNullValue(payment.getPaymentMethod())
20 | || isValueNotGreaterThanZero(payment.getValue())
21 | || isNullValue(payment.getDateOfPayment())) {
22 | return Optional.of(new ValidationError(REQUIRED_DATA_NOT_FILLED_OR_BAD_DATA));
23 | }
24 | return empty();
25 | }
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/domain/rate/entity/RateEntity.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.domain.rate.entity;
2 |
3 | import com.danielmichalski.reservations.commons.entity.BaseEntity;
4 | import com.danielmichalski.reservations.domain.room.entity.RoomEntity;
5 | import com.danielmichalski.reservations.domain.room.entity.RoomTypeEntity;
6 | import jakarta.persistence.Entity;
7 | import jakarta.persistence.JoinColumn;
8 | import jakarta.persistence.ManyToOne;
9 | import jakarta.persistence.Table;
10 | import lombok.AccessLevel;
11 | import lombok.AllArgsConstructor;
12 | import lombok.Getter;
13 | import lombok.NoArgsConstructor;
14 |
15 | @Entity
16 | @Table(name = "rate")
17 | @AllArgsConstructor
18 | @NoArgsConstructor(access = AccessLevel.PROTECTED)
19 | @Getter
20 | public class RateEntity extends BaseEntity {
21 |
22 | @ManyToOne
23 | @JoinColumn(name = "room_id")
24 | private RoomEntity room;
25 |
26 | @ManyToOne
27 | @JoinColumn(name = "room_type_id")
28 | private RoomTypeEntity roomType;
29 |
30 | private Long defaultRate;
31 |
32 | }
33 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/domain/rate/repository/RateRepository.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.domain.rate.repository;
2 |
3 | import com.danielmichalski.reservations.domain.rate.entity.RateEntity;
4 | import org.springframework.data.jpa.repository.JpaRepository;
5 | import org.springframework.stereotype.Repository;
6 |
7 | @Repository
8 | public interface RateRepository extends JpaRepository {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/domain/rate/service/RateService.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.domain.rate.service;
2 |
3 | import com.danielmichalski.reservations.domain.rate.entity.RateEntity;
4 | import com.danielmichalski.reservations.util.annotation.TransactionalReadOnly;
5 | import com.danielmichalski.reservations.util.annotation.TransactionalWrite;
6 |
7 | import java.util.List;
8 |
9 | public interface RateService {
10 |
11 | @TransactionalReadOnly
12 | List findAll();
13 |
14 | @TransactionalWrite
15 | void remove(RateEntity rate);
16 |
17 | @TransactionalWrite
18 | void save(RateEntity rate);
19 | }
20 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/domain/rate/service/RateServiceImpl.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.domain.rate.service;
2 |
3 | import com.danielmichalski.reservations.domain.rate.entity.RateEntity;
4 | import com.danielmichalski.reservations.domain.rate.repository.RateRepository;
5 | import lombok.AllArgsConstructor;
6 | import org.springframework.stereotype.Service;
7 |
8 | import java.util.List;
9 |
10 | @Service
11 | @AllArgsConstructor
12 | class RateServiceImpl implements RateService {
13 |
14 | private final RateRepository rateRepository;
15 |
16 | @Override
17 | public List findAll() {
18 | return rateRepository.findAll();
19 | }
20 |
21 | @Override
22 | public void remove(RateEntity rate) {
23 | rateRepository.delete(rate);
24 | }
25 |
26 | @Override
27 | public void save(RateEntity rate) {
28 | rateRepository.save(rate);
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/domain/rate/validation/RateValidator.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.domain.rate.validation;
2 |
3 | import com.danielmichalski.reservations.commons.validation.ValidationError;
4 | import com.danielmichalski.reservations.commons.validation.ValidationSupport;
5 | import com.danielmichalski.reservations.commons.validation.Validator;
6 | import com.danielmichalski.reservations.domain.rate.entity.RateEntity;
7 | import org.springframework.stereotype.Component;
8 |
9 | import java.util.Optional;
10 |
11 | import static com.danielmichalski.reservations.util.constant.ConstMessagesEN.ValidationMessages.REQUIRED_DATA_NOT_FILLED_OR_BAD_DATA;
12 |
13 | @Component
14 | public class RateValidator extends ValidationSupport implements Validator {
15 |
16 | @Override
17 | public Optional validate(RateEntity rate) {
18 | if (isNullValue(rate.getRoom())
19 | || isNullValue(rate.getRoomType())
20 | || isValueNotGreaterThanZero(rate.getDefaultRate())) {
21 | return Optional.of(new ValidationError(REQUIRED_DATA_NOT_FILLED_OR_BAD_DATA));
22 | }
23 | return Optional.empty();
24 | }
25 |
26 | }
27 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/domain/reservation/entity/ReservationStatusEntity.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.domain.reservation.entity;
2 |
3 | import com.danielmichalski.reservations.commons.entity.BaseEntity;
4 | import jakarta.persistence.Entity;
5 | import jakarta.persistence.Table;
6 | import lombok.AccessLevel;
7 | import lombok.AllArgsConstructor;
8 | import lombok.Getter;
9 | import lombok.NoArgsConstructor;
10 |
11 | @Entity
12 | @Table(name = "reservation_status")
13 | @AllArgsConstructor
14 | @NoArgsConstructor(access = AccessLevel.PROTECTED)
15 | @Getter
16 | public class ReservationStatusEntity extends BaseEntity {
17 |
18 | private String status;
19 |
20 | @Override
21 | public String toString() {
22 | return status;
23 | }
24 |
25 | }
26 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/domain/reservation/repository/ReservationRepository.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.domain.reservation.repository;
2 |
3 | import com.danielmichalski.reservations.domain.reservation.entity.ReservationEntity;
4 | import org.springframework.data.jpa.repository.JpaRepository;
5 | import org.springframework.stereotype.Repository;
6 |
7 | @Repository
8 | public interface ReservationRepository extends JpaRepository {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/domain/reservation/repository/ReservationStatusRepository.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.domain.reservation.repository;
2 |
3 | import com.danielmichalski.reservations.domain.reservation.entity.ReservationStatusEntity;
4 | import org.springframework.data.jpa.repository.JpaRepository;
5 | import org.springframework.stereotype.Repository;
6 |
7 | @Repository
8 | public interface ReservationStatusRepository extends JpaRepository {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/domain/reservation/service/ReservationService.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.domain.reservation.service;
2 |
3 | import com.danielmichalski.reservations.domain.reservation.entity.ReservationEntity;
4 | import com.danielmichalski.reservations.util.annotation.TransactionalReadOnly;
5 | import com.danielmichalski.reservations.util.annotation.TransactionalWrite;
6 |
7 | import java.util.List;
8 |
9 | public interface ReservationService {
10 |
11 | @TransactionalReadOnly
12 | List findAll();
13 |
14 | @TransactionalWrite
15 | void remove(ReservationEntity reservation);
16 |
17 | @TransactionalWrite
18 | void save(ReservationEntity reservation);
19 |
20 | }
21 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/domain/reservation/service/ReservationServiceImpl.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.domain.reservation.service;
2 |
3 | import com.danielmichalski.reservations.domain.reservation.entity.ReservationEntity;
4 | import com.danielmichalski.reservations.domain.reservation.repository.ReservationRepository;
5 | import lombok.AllArgsConstructor;
6 | import org.springframework.stereotype.Service;
7 |
8 | import java.util.List;
9 |
10 | @Service
11 | @AllArgsConstructor
12 | class ReservationServiceImpl implements ReservationService {
13 |
14 | private final ReservationRepository reservationRepository;
15 |
16 | @Override
17 | public List findAll() {
18 | return reservationRepository.findAll();
19 | }
20 |
21 | @Override
22 | public void remove(ReservationEntity reservation) {
23 | reservationRepository.delete(reservation);
24 | }
25 |
26 | @Override
27 | public void save(ReservationEntity reservation) {
28 | reservationRepository.save(reservation);
29 | }
30 |
31 | }
32 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/domain/reservation/service/ReservationStatusService.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.domain.reservation.service;
2 |
3 | import com.danielmichalski.reservations.domain.reservation.entity.ReservationStatusEntity;
4 | import com.danielmichalski.reservations.util.annotation.TransactionalReadOnly;
5 | import com.danielmichalski.reservations.util.annotation.TransactionalWrite;
6 |
7 | import java.util.List;
8 |
9 | public interface ReservationStatusService {
10 |
11 | @TransactionalReadOnly
12 | List findAll();
13 |
14 | @TransactionalWrite
15 | void remove(ReservationStatusEntity reservationStatus);
16 |
17 | @TransactionalWrite
18 | void save(ReservationStatusEntity reservationStatus);
19 | }
20 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/domain/reservation/service/ReservationStatusServiceImpl.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.domain.reservation.service;
2 |
3 | import com.danielmichalski.reservations.domain.reservation.entity.ReservationStatusEntity;
4 | import com.danielmichalski.reservations.domain.reservation.repository.ReservationStatusRepository;
5 | import lombok.AllArgsConstructor;
6 | import org.springframework.stereotype.Service;
7 |
8 | import java.util.List;
9 |
10 | @Service
11 | @AllArgsConstructor
12 | class ReservationStatusServiceImpl implements ReservationStatusService {
13 |
14 | private final ReservationStatusRepository reservationStatusRepository;
15 |
16 | @Override
17 | public List findAll() {
18 | return reservationStatusRepository.findAll();
19 | }
20 |
21 | @Override
22 | public void remove(ReservationStatusEntity reservationStatus) {
23 | reservationStatusRepository.delete(reservationStatus);
24 | }
25 |
26 | @Override
27 | public void save(ReservationStatusEntity reservationStatus) {
28 | reservationStatusRepository.save(reservationStatus);
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/domain/reservation/validation/ReservationStatusValidator.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.domain.reservation.validation;
2 |
3 | import com.danielmichalski.reservations.commons.validation.ValidationError;
4 | import com.danielmichalski.reservations.commons.validation.ValidationSupport;
5 | import com.danielmichalski.reservations.commons.validation.Validator;
6 | import com.danielmichalski.reservations.domain.reservation.entity.ReservationStatusEntity;
7 | import org.springframework.stereotype.Component;
8 |
9 | import java.util.Optional;
10 |
11 | import static com.danielmichalski.reservations.util.constant.ConstMessagesEN.ValidationMessages.REQUIRED_DATA_NOT_FILLED_OR_BAD_DATA;
12 |
13 | @Component
14 | public class ReservationStatusValidator extends ValidationSupport implements Validator {
15 |
16 | @Override
17 | public Optional validate(ReservationStatusEntity reservationStatus) {
18 | if (isNullOrEmptyString(reservationStatus.getStatus())) {
19 | return Optional.of(new ValidationError(REQUIRED_DATA_NOT_FILLED_OR_BAD_DATA));
20 | }
21 | return Optional.empty();
22 | }
23 |
24 | }
25 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/domain/reservation/validation/ReservationValidator.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.domain.reservation.validation;
2 |
3 | import com.danielmichalski.reservations.commons.validation.ValidationError;
4 | import com.danielmichalski.reservations.commons.validation.ValidationSupport;
5 | import com.danielmichalski.reservations.commons.validation.Validator;
6 | import com.danielmichalski.reservations.domain.reservation.entity.ReservationEntity;
7 | import org.springframework.stereotype.Component;
8 |
9 | import java.util.Optional;
10 |
11 | import static com.danielmichalski.reservations.util.constant.ConstMessagesEN.ValidationMessages.DATE_FROM_MUST_BE_EARLIER_THAN_TO_DATE;
12 | import static com.danielmichalski.reservations.util.constant.ConstMessagesEN.ValidationMessages.REQUIRED_DATA_NOT_FILLED_OR_BAD_DATA;
13 | import static java.util.Optional.empty;
14 |
15 | @Component
16 | public class ReservationValidator extends ValidationSupport implements Validator {
17 |
18 | @Override
19 | public Optional validate(ReservationEntity reservation) {
20 | if (isNullValue(reservation.getReservationStatus())
21 | || isNullValue(reservation.getPayment())
22 | || isNullValue(reservation.getClient())
23 | || isNullValue(reservation.getFromDate())
24 | || isNullValue(reservation.getToDate())
25 | || isNullValue(reservation.getReservationDate())
26 | || isValueNotGreaterThanZero(reservation.getAmount())) {
27 | return Optional.of(new ValidationError(REQUIRED_DATA_NOT_FILLED_OR_BAD_DATA));
28 | }
29 | if (reservation.getFromDate().after(reservation.getToDate())) {
30 | return Optional.of(new ValidationError(DATE_FROM_MUST_BE_EARLIER_THAN_TO_DATE));
31 | }
32 | return empty();
33 | }
34 |
35 | }
36 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/domain/room/dto/RoomStatusesCountDto.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.domain.room.dto;
2 |
3 | public record RoomStatusesCountDto(String status, long count) {
4 |
5 | }
6 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/domain/room/entity/RoomEntity.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.domain.room.entity;
2 |
3 | import com.danielmichalski.reservations.commons.entity.BaseEntity;
4 | import jakarta.persistence.Column;
5 | import jakarta.persistence.Entity;
6 | import jakarta.persistence.JoinColumn;
7 | import jakarta.persistence.ManyToOne;
8 | import jakarta.persistence.Table;
9 | import lombok.AccessLevel;
10 | import lombok.AllArgsConstructor;
11 | import lombok.Getter;
12 | import lombok.NoArgsConstructor;
13 |
14 | @Entity
15 | @Table(name = "room")
16 | @AllArgsConstructor
17 | @NoArgsConstructor(access = AccessLevel.PROTECTED)
18 | @Getter
19 | public class RoomEntity extends BaseEntity {
20 |
21 | @ManyToOne
22 | @JoinColumn(name = "room_status_id")
23 | private RoomStatusEntity roomStatus;
24 |
25 | @Column(name = "number_of_people")
26 | private Integer numberOfPeople;
27 |
28 | @Column(name = "description")
29 | private String description;
30 |
31 | @Override
32 | public String toString() {
33 | return description;
34 | }
35 |
36 | }
37 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/domain/room/entity/RoomStatusEntity.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.domain.room.entity;
2 |
3 | import com.danielmichalski.reservations.commons.entity.BaseEntity;
4 | import jakarta.persistence.Entity;
5 | import jakarta.persistence.Table;
6 | import lombok.AccessLevel;
7 | import lombok.AllArgsConstructor;
8 | import lombok.Getter;
9 | import lombok.NoArgsConstructor;
10 |
11 | @Entity
12 | @Table(name = "room_status")
13 | @AllArgsConstructor
14 | @NoArgsConstructor(access = AccessLevel.PROTECTED)
15 | @Getter
16 | public class RoomStatusEntity extends BaseEntity {
17 |
18 | private String status;
19 |
20 | private String statusDescription;
21 |
22 | @Override
23 | public String toString() {
24 | return status + " " + statusDescription;
25 | }
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/domain/room/entity/RoomTypeEntity.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.domain.room.entity;
2 |
3 | import com.danielmichalski.reservations.commons.entity.BaseEntity;
4 | import jakarta.persistence.Entity;
5 | import jakarta.persistence.Table;
6 | import lombok.AccessLevel;
7 | import lombok.AllArgsConstructor;
8 | import lombok.Getter;
9 | import lombok.NoArgsConstructor;
10 |
11 | @Entity
12 | @Table(name = "room_type")
13 | @AllArgsConstructor
14 | @NoArgsConstructor(access = AccessLevel.PROTECTED)
15 | @Getter
16 | public class RoomTypeEntity extends BaseEntity {
17 |
18 | private String description;
19 |
20 | private Integer multiplier;
21 |
22 | @Override
23 | public String toString() {
24 | return description;
25 | }
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/domain/room/entity/RoomXReservationEntity.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.domain.room.entity;
2 |
3 | import com.danielmichalski.reservations.domain.reservation.entity.ReservationEntity;
4 | import jakarta.persistence.EmbeddedId;
5 | import jakarta.persistence.Entity;
6 | import jakarta.persistence.Table;
7 |
8 | @Entity
9 | @Table(name = "room_x_reservation")
10 | public class RoomXReservationEntity {
11 |
12 | @EmbeddedId
13 | private RoomXReservationPK roomXReservationPK;
14 |
15 | private Integer roomPrice;
16 |
17 | public RoomXReservationEntity() {
18 | }
19 |
20 | public RoomXReservationEntity(RoomXReservationPK roomXReservationPK) {
21 | this.roomXReservationPK = roomXReservationPK;
22 | }
23 |
24 | public RoomEntity getRoom() {
25 | return roomXReservationPK.getRoom();
26 | }
27 |
28 | public void setRoom(RoomEntity room) {
29 | roomXReservationPK.setRoom(room);
30 | }
31 |
32 | public ReservationEntity getReservation() {
33 | return roomXReservationPK.getReservation();
34 | }
35 |
36 | public void setReservation(ReservationEntity reservation) {
37 | roomXReservationPK.setReservation(reservation);
38 | }
39 |
40 | public long getRoomPrice() {
41 | return roomPrice;
42 | }
43 |
44 | public void setRoomPrice(Integer roomPrice) {
45 | this.roomPrice = roomPrice;
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/domain/room/entity/RoomXReservationPK.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.domain.room.entity;
2 |
3 | import com.danielmichalski.reservations.domain.reservation.entity.ReservationEntity;
4 | import jakarta.persistence.Embeddable;
5 | import jakarta.persistence.JoinColumn;
6 | import jakarta.persistence.ManyToOne;
7 | import lombok.AccessLevel;
8 | import lombok.AllArgsConstructor;
9 | import lombok.Data;
10 | import lombok.NoArgsConstructor;
11 |
12 | import java.io.Serializable;
13 |
14 | @Embeddable
15 | @AllArgsConstructor
16 | @NoArgsConstructor(access = AccessLevel.PROTECTED)
17 | @Data
18 | public class RoomXReservationPK implements Serializable {
19 |
20 | @ManyToOne
21 | @JoinColumn(name = "room_id")
22 | private RoomEntity room;
23 |
24 | @ManyToOne
25 | @JoinColumn(name = "reservation_id")
26 | private ReservationEntity reservation;
27 |
28 | }
29 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/domain/room/repository/RoomRepository.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.domain.room.repository;
2 |
3 | import com.danielmichalski.reservations.domain.room.entity.RoomEntity;
4 | import org.springframework.data.jpa.repository.JpaRepository;
5 | import org.springframework.stereotype.Repository;
6 |
7 | @Repository
8 | public interface RoomRepository extends JpaRepository {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/domain/room/repository/RoomStatusRepository.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.domain.room.repository;
2 |
3 | import com.danielmichalski.reservations.domain.room.entity.RoomStatusEntity;
4 | import org.springframework.data.jpa.repository.JpaRepository;
5 | import org.springframework.data.jpa.repository.Query;
6 | import org.springframework.stereotype.Repository;
7 |
8 | @Repository
9 | public interface RoomStatusRepository extends JpaRepository {
10 |
11 | @Query("""
12 | SELECT rs.status AS name, COUNT(r.id) AS count
13 | FROM RoomEntity r
14 | JOIN r.roomStatus rs
15 | GROUP BY rs.status
16 | """
17 | )
18 | Object[][] getRoomStatusesCount();
19 |
20 | }
21 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/domain/room/repository/RoomTypeRepository.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.domain.room.repository;
2 |
3 | import com.danielmichalski.reservations.domain.room.entity.RoomTypeEntity;
4 | import org.springframework.data.jpa.repository.JpaRepository;
5 | import org.springframework.stereotype.Repository;
6 |
7 | @Repository
8 | public interface RoomTypeRepository extends JpaRepository {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/domain/room/repository/RoomXReservationRepository.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.domain.room.repository;
2 |
3 | import com.danielmichalski.reservations.domain.room.entity.RoomXReservationEntity;
4 | import org.springframework.data.jpa.repository.JpaRepository;
5 | import org.springframework.stereotype.Repository;
6 |
7 | @Repository
8 | public interface RoomXReservationRepository extends JpaRepository {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/domain/room/service/RoomService.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.domain.room.service;
2 |
3 | import com.danielmichalski.reservations.domain.room.entity.RoomEntity;
4 | import com.danielmichalski.reservations.util.annotation.TransactionalReadOnly;
5 | import com.danielmichalski.reservations.util.annotation.TransactionalWrite;
6 |
7 | import java.util.List;
8 |
9 | public interface RoomService {
10 |
11 | @TransactionalReadOnly
12 | List findAll();
13 |
14 | @TransactionalWrite
15 | void remove(RoomEntity room);
16 |
17 | @TransactionalWrite
18 | void save(RoomEntity room);
19 | }
20 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/domain/room/service/RoomServiceImpl.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.domain.room.service;
2 |
3 | import com.danielmichalski.reservations.domain.room.entity.RoomEntity;
4 | import com.danielmichalski.reservations.domain.room.repository.RoomRepository;
5 | import lombok.AllArgsConstructor;
6 | import org.springframework.stereotype.Service;
7 |
8 | import java.util.List;
9 |
10 | @Service
11 | @AllArgsConstructor
12 | class RoomServiceImpl implements RoomService {
13 |
14 | private final RoomRepository roomRepository;
15 |
16 | @Override
17 | public List findAll() {
18 | return roomRepository.findAll();
19 | }
20 |
21 | @Override
22 | public void remove(RoomEntity room) {
23 | roomRepository.delete(room);
24 | }
25 |
26 | @Override
27 | public void save(RoomEntity room) {
28 | roomRepository.save(room);
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/domain/room/service/RoomStatusService.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.domain.room.service;
2 |
3 | import com.danielmichalski.reservations.domain.room.dto.RoomStatusesCountDto;
4 | import com.danielmichalski.reservations.domain.room.entity.RoomStatusEntity;
5 | import com.danielmichalski.reservations.util.annotation.TransactionalReadOnly;
6 | import com.danielmichalski.reservations.util.annotation.TransactionalWrite;
7 |
8 | import java.util.List;
9 |
10 | public interface RoomStatusService {
11 |
12 | @TransactionalReadOnly
13 | List findAll();
14 |
15 | @TransactionalWrite
16 | void remove(RoomStatusEntity roomStatus);
17 |
18 | @TransactionalWrite
19 | void save(RoomStatusEntity roomStatus);
20 |
21 | @TransactionalReadOnly
22 | List getRoomStatusesCount();
23 |
24 | }
25 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/domain/room/service/RoomStatusServiceImpl.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.domain.room.service;
2 |
3 | import com.danielmichalski.reservations.domain.room.dto.RoomStatusesCountDto;
4 | import com.danielmichalski.reservations.domain.room.entity.RoomStatusEntity;
5 | import com.danielmichalski.reservations.domain.room.repository.RoomStatusRepository;
6 | import lombok.AllArgsConstructor;
7 | import org.springframework.stereotype.Service;
8 |
9 | import java.util.List;
10 | import java.util.stream.Stream;
11 |
12 | import static java.util.stream.Collectors.toList;
13 |
14 | @Service
15 | @AllArgsConstructor
16 | class RoomStatusServiceImpl implements RoomStatusService {
17 |
18 | public static final int STATUS_INDEX = 0;
19 | public static final int COUNT_INDEX = 1;
20 |
21 | private final RoomStatusRepository roomStatusRepository;
22 |
23 | @Override
24 | public List findAll() {
25 | return roomStatusRepository.findAll();
26 | }
27 |
28 | @Override
29 | public void remove(RoomStatusEntity roomStatus) {
30 | roomStatusRepository.delete(roomStatus);
31 | }
32 |
33 | @Override
34 | public void save(RoomStatusEntity roomStatus) {
35 | roomStatusRepository.save(roomStatus);
36 | }
37 |
38 | @Override
39 | public List getRoomStatusesCount() {
40 | Object[][] roomStatusesCount = roomStatusRepository.getRoomStatusesCount();
41 | return Stream.of(roomStatusesCount)
42 | .map(this::convertToRoomStatusesCountDto)
43 | .collect(toList());
44 | }
45 |
46 | private RoomStatusesCountDto convertToRoomStatusesCountDto(Object... rsc) {
47 | String status = (String) rsc[STATUS_INDEX];
48 | long count = (long) rsc[COUNT_INDEX];
49 | return new RoomStatusesCountDto(status, count);
50 | }
51 |
52 | }
53 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/domain/room/service/RoomTypeService.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.domain.room.service;
2 |
3 | import com.danielmichalski.reservations.domain.room.entity.RoomTypeEntity;
4 | import com.danielmichalski.reservations.util.annotation.TransactionalReadOnly;
5 | import com.danielmichalski.reservations.util.annotation.TransactionalWrite;
6 |
7 | import java.util.List;
8 |
9 | public interface RoomTypeService {
10 |
11 | @TransactionalReadOnly
12 | List findAll();
13 |
14 | @TransactionalWrite
15 | void remove(RoomTypeEntity roomType);
16 |
17 | @TransactionalWrite
18 | void save(RoomTypeEntity roomType);
19 |
20 | }
21 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/domain/room/service/RoomTypeServiceImpl.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.domain.room.service;
2 |
3 | import com.danielmichalski.reservations.domain.room.entity.RoomTypeEntity;
4 | import com.danielmichalski.reservations.domain.room.repository.RoomTypeRepository;
5 | import lombok.AllArgsConstructor;
6 | import org.springframework.stereotype.Service;
7 |
8 | import java.util.List;
9 |
10 | @Service
11 | @AllArgsConstructor
12 | class RoomTypeServiceImpl implements RoomTypeService {
13 |
14 | private final RoomTypeRepository roomTypeRepository;
15 |
16 | @Override
17 | public List findAll() {
18 | return roomTypeRepository.findAll();
19 | }
20 |
21 | @Override
22 | public void remove(RoomTypeEntity roomType) {
23 | roomTypeRepository.delete(roomType);
24 | }
25 |
26 | @Override
27 | public void save(RoomTypeEntity roomType) {
28 | roomTypeRepository.save(roomType);
29 | }
30 |
31 | }
32 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/domain/room/service/RoomXReservationService.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.domain.room.service;
2 |
3 | import com.danielmichalski.reservations.domain.room.entity.RoomXReservationEntity;
4 | import com.danielmichalski.reservations.util.annotation.TransactionalReadOnly;
5 | import com.danielmichalski.reservations.util.annotation.TransactionalWrite;
6 |
7 | import java.util.List;
8 |
9 | public interface RoomXReservationService {
10 |
11 | @TransactionalReadOnly
12 | List findAll();
13 |
14 | @TransactionalWrite
15 | void remove(RoomXReservationEntity roomXReservation);
16 |
17 | @TransactionalWrite
18 | void save(RoomXReservationEntity roomXReservation);
19 |
20 | }
21 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/domain/room/service/RoomXReservationServiceImpl.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.domain.room.service;
2 |
3 | import com.danielmichalski.reservations.domain.room.entity.RoomXReservationEntity;
4 | import com.danielmichalski.reservations.domain.room.repository.RoomXReservationRepository;
5 | import lombok.AllArgsConstructor;
6 | import org.springframework.stereotype.Service;
7 |
8 | import java.util.List;
9 |
10 | @Service
11 | @AllArgsConstructor
12 | class RoomXReservationServiceImpl implements RoomXReservationService {
13 |
14 | private final RoomXReservationRepository roomXReservationRepository;
15 |
16 | @Override
17 | public List findAll() {
18 | return roomXReservationRepository.findAll();
19 | }
20 |
21 | @Override
22 | public void remove(RoomXReservationEntity roomXReservation) {
23 | roomXReservationRepository.delete(roomXReservation);
24 | }
25 |
26 | @Override
27 | public void save(RoomXReservationEntity roomXReservation) {
28 | roomXReservationRepository.save(roomXReservation);
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/domain/room/validation/RoomStatusValidator.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.domain.room.validation;
2 |
3 | import com.danielmichalski.reservations.commons.validation.ValidationError;
4 | import com.danielmichalski.reservations.commons.validation.ValidationSupport;
5 | import com.danielmichalski.reservations.commons.validation.Validator;
6 | import com.danielmichalski.reservations.domain.room.entity.RoomStatusEntity;
7 | import org.springframework.stereotype.Component;
8 |
9 | import java.util.Optional;
10 |
11 | import static com.danielmichalski.reservations.util.constant.ConstMessagesEN.ValidationMessages.REQUIRED_DATA_NOT_FILLED_OR_BAD_DATA;
12 |
13 | @Component
14 | public class RoomStatusValidator extends ValidationSupport implements Validator {
15 |
16 | @Override
17 | public Optional validate(RoomStatusEntity roomStatus) {
18 | if (isNullOrEmptyString(roomStatus.getStatus())
19 | || isNullOrEmptyString(roomStatus.getStatusDescription())) {
20 | return Optional.of(new ValidationError(REQUIRED_DATA_NOT_FILLED_OR_BAD_DATA));
21 | }
22 | return Optional.empty();
23 | }
24 |
25 | }
26 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/domain/room/validation/RoomTypeValidator.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.domain.room.validation;
2 |
3 | import com.danielmichalski.reservations.commons.validation.ValidationError;
4 | import com.danielmichalski.reservations.commons.validation.ValidationSupport;
5 | import com.danielmichalski.reservations.commons.validation.Validator;
6 | import com.danielmichalski.reservations.domain.room.entity.RoomTypeEntity;
7 | import org.springframework.stereotype.Component;
8 |
9 | import java.util.Optional;
10 |
11 | import static com.danielmichalski.reservations.util.constant.ConstMessagesEN.ValidationMessages.REQUIRED_DATA_NOT_FILLED_OR_BAD_DATA;
12 |
13 | @Component
14 | public class RoomTypeValidator extends ValidationSupport implements Validator {
15 |
16 | @Override
17 | public Optional validate(RoomTypeEntity roomType) {
18 | if (isNullOrEmptyString(roomType.getDescription())
19 | || isValueNotGreaterThanZero(Long.valueOf(roomType.getMultiplier()))) {
20 | return Optional.of(new ValidationError(REQUIRED_DATA_NOT_FILLED_OR_BAD_DATA));
21 | }
22 | return Optional.empty();
23 | }
24 |
25 | }
26 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/domain/room/validation/RoomValidator.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.domain.room.validation;
2 |
3 | import com.danielmichalski.reservations.commons.validation.ValidationError;
4 | import com.danielmichalski.reservations.commons.validation.ValidationSupport;
5 | import com.danielmichalski.reservations.commons.validation.Validator;
6 | import com.danielmichalski.reservations.domain.room.entity.RoomEntity;
7 | import org.springframework.stereotype.Component;
8 |
9 | import java.util.Optional;
10 |
11 | import static com.danielmichalski.reservations.util.constant.ConstMessagesEN.ValidationMessages.REQUIRED_DATA_NOT_FILLED_OR_BAD_DATA;
12 |
13 | @Component
14 | public class RoomValidator extends ValidationSupport implements Validator {
15 |
16 | @Override
17 | public Optional validate(RoomEntity room) {
18 | if (isNullValue(room.getRoomStatus())
19 | || isValueNotGreaterThanZero(Long.valueOf(room.getNumberOfPeople()))
20 | || isNullOrEmptyString(room.getDescription())) {
21 | return Optional.of(new ValidationError(REQUIRED_DATA_NOT_FILLED_OR_BAD_DATA));
22 | }
23 | return Optional.empty();
24 | }
25 |
26 | }
27 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/domain/room/validation/RoomXReservationValidator.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.domain.room.validation;
2 |
3 | import com.danielmichalski.reservations.commons.validation.ValidationError;
4 | import com.danielmichalski.reservations.commons.validation.ValidationSupport;
5 | import com.danielmichalski.reservations.commons.validation.Validator;
6 | import com.danielmichalski.reservations.domain.room.entity.RoomXReservationEntity;
7 | import org.springframework.stereotype.Component;
8 |
9 | import java.util.Optional;
10 |
11 | import static com.danielmichalski.reservations.util.constant.ConstMessagesEN.ValidationMessages.REQUIRED_DATA_NOT_FILLED_OR_BAD_DATA;
12 |
13 | @Component
14 | public class RoomXReservationValidator extends ValidationSupport implements Validator {
15 |
16 | @Override
17 | public Optional validate(RoomXReservationEntity roomXReservation) {
18 | if (isNullValue(roomXReservation.getReservation())
19 | || isNullValue(roomXReservation.getReservation())
20 | || isValueNotGreaterThanZero(roomXReservation.getRoomPrice())) {
21 | return Optional.of(new ValidationError(REQUIRED_DATA_NOT_FILLED_OR_BAD_DATA));
22 | }
23 | return Optional.empty();
24 | }
25 |
26 | }
27 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/address/model/AddressTableModel.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.address.model;
2 |
3 | import com.danielmichalski.reservations.domain.address.entity.AddressEntity;
4 | import com.danielmichalski.reservations.ui.shared.model.DefaultTableModel;
5 | import com.danielmichalski.reservations.util.constant.ConstMessagesEN;
6 | import org.apache.logging.log4j.util.Strings;
7 | import org.springframework.stereotype.Component;
8 |
9 | @Component
10 | public class AddressTableModel extends DefaultTableModel {
11 |
12 | private static final int STREET_INDEX = 0;
13 | private static final int HOUSE_NUMBER_INDEX = 1;
14 | private static final int FLAT_NUMBER_INDEX = 2;
15 | private static final int CITY_INDEX = 3;
16 | private static final int POSTAL_CODE_INDEX = 4;
17 |
18 | @Override
19 | public String[] getColumnLabels() {
20 | return new String[]{
21 | ConstMessagesEN.Labels.STREET,
22 | ConstMessagesEN.Labels.HOUSE_NUMBER,
23 | ConstMessagesEN.Labels.FLAT_NUMBER,
24 | ConstMessagesEN.Labels.CITY,
25 | ConstMessagesEN.Labels.POSTAL_CODE};
26 | }
27 |
28 | @Override
29 | public Object getValueAt(int rowIndex, int columnIndex) {
30 | AddressEntity address = entities.get(rowIndex);
31 |
32 | switch (columnIndex) {
33 | case STREET_INDEX:
34 | return address.getStreet();
35 | case HOUSE_NUMBER_INDEX:
36 | return address.getHouseNumber();
37 | case FLAT_NUMBER_INDEX:
38 | return address.getFlatNumber();
39 | case CITY_INDEX:
40 | return address.getCity();
41 | case POSTAL_CODE_INDEX:
42 | return address.getPostalCode();
43 | default:
44 | return Strings.EMPTY;
45 | }
46 | }
47 |
48 | }
49 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/address/view/AddressTableBtnPanel.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.address.view;
2 |
3 | import com.danielmichalski.reservations.util.constant.ConstMessagesEN;
4 | import jakarta.annotation.PostConstruct;
5 | import lombok.Getter;
6 | import org.springframework.stereotype.Component;
7 |
8 | import javax.swing.JButton;
9 | import javax.swing.JPanel;
10 |
11 | @Component
12 | @Getter
13 | public class AddressTableBtnPanel extends JPanel {
14 |
15 | private JButton addBtn;
16 | private JButton removeBtn;
17 |
18 | @PostConstruct
19 | @SuppressWarnings("PMD.UnusedPrivateMethod")
20 | private void preparePanel() {
21 | initComponents();
22 | }
23 |
24 | private void initComponents() {
25 | addBtn = new JButton(ConstMessagesEN.Labels.ADD_BTN);
26 | add(addBtn);
27 |
28 | removeBtn = new JButton(ConstMessagesEN.Labels.REMOVE_BTN);
29 | add(removeBtn);
30 | }
31 |
32 | }
33 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/address/view/AddressTableFrame.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.address.view;
2 |
3 | import com.danielmichalski.reservations.util.constant.ConstMessagesEN;
4 | import jakarta.annotation.PostConstruct;
5 | import lombok.AllArgsConstructor;
6 | import lombok.Getter;
7 | import org.springframework.stereotype.Component;
8 |
9 | import javax.swing.JFrame;
10 | import javax.swing.WindowConstants;
11 | import java.awt.BorderLayout;
12 |
13 | @Component
14 | @AllArgsConstructor
15 | @Getter
16 | public class AddressTableFrame extends JFrame {
17 |
18 | private static final int DEFAULT_WIDTH = 500;
19 | private static final int DEFAULT_HEIGHT = 300;
20 |
21 | private final AddressTablePanel tablePanel;
22 | private final AddressTableBtnPanel tableBtnPanel;
23 |
24 | @PostConstruct
25 | @SuppressWarnings("PMD.UnusedPrivateMethod")
26 | private void prepareFrame() {
27 | setFrameUp();
28 | initComponents();
29 | }
30 |
31 | private void setFrameUp() {
32 | setTitle(ConstMessagesEN.Labels.ADDRESSES);
33 | setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
34 | setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
35 | setLocationRelativeTo(null);
36 | setResizable(false);
37 | }
38 |
39 | private void initComponents() {
40 | add(tablePanel, BorderLayout.CENTER);
41 | add(tableBtnPanel, BorderLayout.SOUTH);
42 | }
43 |
44 | }
45 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/address/view/AddressTablePanel.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.address.view;
2 |
3 | import com.danielmichalski.reservations.ui.forms.address.model.AddressTableModel;
4 | import jakarta.annotation.PostConstruct;
5 | import lombok.Getter;
6 | import org.springframework.stereotype.Component;
7 |
8 | import javax.swing.JPanel;
9 | import javax.swing.JScrollPane;
10 | import javax.swing.JTable;
11 | import javax.swing.ListSelectionModel;
12 | import java.awt.BorderLayout;
13 |
14 | @Component
15 | @Getter
16 | public class AddressTablePanel extends JPanel {
17 |
18 | private final AddressTableModel tableModel;
19 |
20 | private JTable table;
21 |
22 | AddressTablePanel(AddressTableModel tableModel) {
23 | this.tableModel = tableModel;
24 | }
25 |
26 | @PostConstruct
27 | @SuppressWarnings("PMD.UnusedPrivateMethod")
28 | private void preparePanel() {
29 | setPanelUp();
30 | initComponents();
31 | }
32 |
33 | private void setPanelUp() {
34 | setLayout(new BorderLayout());
35 | }
36 |
37 | private void initComponents() {
38 | table = new JTable(tableModel);
39 | table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
40 |
41 | JScrollPane paneWithTable = new JScrollPane(table);
42 | add(paneWithTable, BorderLayout.CENTER);
43 | }
44 |
45 | }
46 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/address/view/modal/AddAddressFrame.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.address.view.modal;
2 |
3 | import com.danielmichalski.reservations.util.constant.ConstMessagesEN;
4 | import jakarta.annotation.PostConstruct;
5 | import lombok.AllArgsConstructor;
6 | import lombok.Getter;
7 | import org.springframework.stereotype.Component;
8 |
9 | import javax.swing.JDialog;
10 | import javax.swing.WindowConstants;
11 | import java.awt.BorderLayout;
12 |
13 | @Component
14 | @AllArgsConstructor
15 | @Getter
16 | public class AddAddressFrame extends JDialog {
17 |
18 | private final AddressFormPanel formPanel;
19 | private final AddressFormBtnPanel formBtnPanel;
20 |
21 | @PostConstruct
22 | @SuppressWarnings("PMD.UnusedPrivateMethod")
23 | private void prepareFrame() {
24 | setFrameUp();
25 | initComponents();
26 | pack();
27 | }
28 |
29 | private void setFrameUp() {
30 | setTitle(ConstMessagesEN.DialogTitles.ADDRESS_MODAL);
31 | setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
32 | setLocationRelativeTo(null);
33 | setResizable(false);
34 | setModal(true);
35 | }
36 |
37 | private void initComponents() {
38 | add(formPanel, BorderLayout.CENTER);
39 | add(formBtnPanel, BorderLayout.SOUTH);
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/address/view/modal/AddressFormBtnPanel.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.address.view.modal;
2 |
3 | import com.danielmichalski.reservations.util.constant.ConstMessagesEN;
4 | import jakarta.annotation.PostConstruct;
5 | import lombok.Getter;
6 | import org.springframework.stereotype.Component;
7 |
8 | import javax.swing.JButton;
9 | import javax.swing.JPanel;
10 |
11 | @Component
12 | @Getter
13 | public class AddressFormBtnPanel extends JPanel {
14 |
15 | private JButton saveBtn;
16 | private JButton cancelBtn;
17 |
18 | @PostConstruct
19 | @SuppressWarnings("PMD.UnusedPrivateMethod")
20 | private void preparePanel() {
21 | initComponents();
22 | }
23 |
24 | private void initComponents() {
25 | saveBtn = new JButton(ConstMessagesEN.Labels.ADD_BTN);
26 | add(saveBtn);
27 |
28 | cancelBtn = new JButton(ConstMessagesEN.Labels.CANCEL_BTN);
29 | add(cancelBtn);
30 | }
31 |
32 | }
33 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/client/model/AddressComboBoxModel.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.client.model;
2 |
3 | import com.danielmichalski.reservations.domain.address.entity.AddressEntity;
4 | import com.danielmichalski.reservations.ui.shared.model.DefaultAbstractComboBoxModel;
5 | import org.springframework.stereotype.Component;
6 |
7 | @Component
8 | public class AddressComboBoxModel extends DefaultAbstractComboBoxModel {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/client/model/ClientTableModel.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.client.model;
2 |
3 | import com.danielmichalski.reservations.domain.client.entity.ClientEntity;
4 | import com.danielmichalski.reservations.ui.shared.model.DefaultTableModel;
5 | import com.danielmichalski.reservations.util.constant.ConstMessagesEN;
6 | import org.apache.logging.log4j.util.Strings;
7 | import org.springframework.stereotype.Component;
8 |
9 | @Component
10 | public class ClientTableModel extends DefaultTableModel {
11 |
12 | private static final int NAME_INDEX = 0;
13 | private static final int SURNAME_INDEX = 1;
14 | private static final int PESEL_INDEX = 2;
15 | private static final int PHONE_NUMBER_INDEX = 3;
16 | private static final int EMAIL_INDEX = 4;
17 | private static final int ADDRESS_INDEX = 5;
18 |
19 | @Override
20 | public String[] getColumnLabels() {
21 | return new String[]{
22 | ConstMessagesEN.Labels.NAME,
23 | ConstMessagesEN.Labels.SURNAME,
24 | ConstMessagesEN.Labels.PESEL,
25 | ConstMessagesEN.Labels.PHONE_NUMBER,
26 | ConstMessagesEN.Labels.EMAIL,
27 | ConstMessagesEN.Labels.ADDRESS};
28 | }
29 |
30 | @Override
31 | public Object getValueAt(int rowIndex, int columnIndex) {
32 | ClientEntity client = entities.get(rowIndex);
33 |
34 | switch (columnIndex) {
35 | case NAME_INDEX:
36 | return client.getName();
37 | case SURNAME_INDEX:
38 | return client.getSurname();
39 | case PESEL_INDEX:
40 | return client.getPesel();
41 | case PHONE_NUMBER_INDEX:
42 | return client.getPhoneNumber();
43 | case EMAIL_INDEX:
44 | return client.getEmail();
45 | case ADDRESS_INDEX:
46 | return client.getAddress();
47 | default:
48 | return Strings.EMPTY;
49 | }
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/client/view/ClientFrame.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.client.view;
2 |
3 | import com.danielmichalski.reservations.util.constant.ConstMessagesEN;
4 | import jakarta.annotation.PostConstruct;
5 | import lombok.AllArgsConstructor;
6 | import lombok.Getter;
7 | import org.springframework.stereotype.Component;
8 |
9 | import javax.swing.JFrame;
10 | import javax.swing.WindowConstants;
11 | import java.awt.BorderLayout;
12 |
13 | @Component
14 | @AllArgsConstructor
15 | @Getter
16 | public class ClientFrame extends JFrame {
17 |
18 | private static final int DEFAULT_WIDTH = 750;
19 | private static final int DEFAULT_HEIGHT = 340;
20 |
21 | private final ClientTablePanel clientTablePanel;
22 | private final TableBtnPanel tableBtnPanel;
23 |
24 | @PostConstruct
25 | @SuppressWarnings("PMD.UnusedPrivateMethod")
26 | private void prepareFrame() {
27 | setFrameUp();
28 | initComponents();
29 | }
30 |
31 | private void setFrameUp() {
32 | setTitle(ConstMessagesEN.Labels.CLIENTS);
33 | setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
34 | setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
35 | setLocationRelativeTo(null);
36 | setResizable(false);
37 | }
38 |
39 | private void initComponents() {
40 | add(clientTablePanel, BorderLayout.CENTER);
41 | add(tableBtnPanel, BorderLayout.SOUTH);
42 | }
43 |
44 | }
45 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/client/view/ClientTablePanel.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.client.view;
2 |
3 | import com.danielmichalski.reservations.ui.forms.client.model.ClientTableModel;
4 | import jakarta.annotation.PostConstruct;
5 | import lombok.Getter;
6 | import org.springframework.stereotype.Component;
7 |
8 | import javax.swing.JPanel;
9 | import javax.swing.JScrollPane;
10 | import javax.swing.JTable;
11 | import javax.swing.ListSelectionModel;
12 | import java.awt.BorderLayout;
13 |
14 | @Component
15 | @Getter
16 | public class ClientTablePanel extends JPanel {
17 |
18 | private final ClientTableModel clientTableModel;
19 |
20 | private JTable clientTable;
21 |
22 | ClientTablePanel(ClientTableModel clientTableModel) {
23 | this.clientTableModel = clientTableModel;
24 | }
25 |
26 | @PostConstruct
27 | @SuppressWarnings("PMD.UnusedPrivateMethod")
28 | private void preparePanel() {
29 | setPanelUp();
30 | initComponents();
31 | }
32 |
33 | private void setPanelUp() {
34 | setLayout(new BorderLayout());
35 | }
36 |
37 | private void initComponents() {
38 | clientTable = new JTable(clientTableModel);
39 | clientTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
40 |
41 | JScrollPane paneWithTable = new JScrollPane(clientTable);
42 | add(paneWithTable, BorderLayout.CENTER);
43 | }
44 |
45 | }
46 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/client/view/TableBtnPanel.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.client.view;
2 |
3 | import com.danielmichalski.reservations.util.constant.ConstMessagesEN;
4 | import jakarta.annotation.PostConstruct;
5 | import lombok.Getter;
6 | import org.springframework.stereotype.Component;
7 |
8 | import javax.swing.JButton;
9 | import javax.swing.JPanel;
10 |
11 | @Component
12 | @Getter
13 | public class TableBtnPanel extends JPanel {
14 |
15 | private JButton addBtn;
16 | private JButton removeBtn;
17 |
18 | @PostConstruct
19 | @SuppressWarnings("PMD.UnusedPrivateMethod")
20 | private void preparePanel() {
21 | initComponents();
22 | }
23 |
24 | private void initComponents() {
25 | addBtn = new JButton(ConstMessagesEN.Labels.ADD_BTN);
26 | add(addBtn);
27 |
28 | removeBtn = new JButton(ConstMessagesEN.Labels.REMOVE_BTN);
29 | add(removeBtn);
30 | }
31 |
32 | }
33 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/client/view/modal/AddClientFrame.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.client.view.modal;
2 |
3 | import com.danielmichalski.reservations.util.constant.ConstMessagesEN;
4 | import jakarta.annotation.PostConstruct;
5 | import lombok.AllArgsConstructor;
6 | import lombok.Getter;
7 | import org.springframework.stereotype.Component;
8 |
9 | import javax.swing.JDialog;
10 | import java.awt.BorderLayout;
11 |
12 | @Component
13 | @AllArgsConstructor
14 | @Getter
15 | public class AddClientFrame extends JDialog {
16 |
17 | private final FormPanel formPanel;
18 | private final FormBtnPanel formBtnPanel;
19 |
20 | @PostConstruct
21 | @SuppressWarnings("PMD.UnusedPrivateMethod")
22 | private void prepareFrame() {
23 | setFrameUp();
24 | initComponents();
25 | pack();
26 | }
27 |
28 | private void setFrameUp() {
29 | setTitle(ConstMessagesEN.DialogTitles.CLIENT_MODAL);
30 | setDefaultCloseOperation(HIDE_ON_CLOSE);
31 | setLocationRelativeTo(null);
32 | setResizable(false);
33 | setModal(true);
34 | }
35 |
36 | private void initComponents() {
37 | add(formPanel, BorderLayout.CENTER);
38 | add(formBtnPanel, BorderLayout.SOUTH);
39 | }
40 |
41 | }
42 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/client/view/modal/FormBtnPanel.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.client.view.modal;
2 |
3 | import com.danielmichalski.reservations.util.constant.ConstMessagesEN;
4 | import jakarta.annotation.PostConstruct;
5 | import lombok.Getter;
6 | import org.springframework.stereotype.Component;
7 |
8 | import javax.swing.JButton;
9 | import javax.swing.JPanel;
10 |
11 | @Component
12 | @Getter
13 | public class FormBtnPanel extends JPanel {
14 |
15 | private JButton saveBtn;
16 | private JButton cancelBtn;
17 |
18 | @PostConstruct
19 | @SuppressWarnings("PMD.UnusedPrivateMethod")
20 | private void initPanel() {
21 | initComponents();
22 | }
23 |
24 | private void initComponents() {
25 | saveBtn = new JButton(ConstMessagesEN.Labels.ADD_BTN);
26 | add(saveBtn);
27 |
28 | cancelBtn = new JButton(ConstMessagesEN.Labels.CANCEL_BTN);
29 | add(cancelBtn);
30 | }
31 |
32 | }
33 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/payment/model/PaymentMethodComboBoxModel.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.payment.model;
2 |
3 | import com.danielmichalski.reservations.domain.payment.entity.PaymentMethodEntity;
4 | import com.danielmichalski.reservations.ui.shared.model.DefaultAbstractComboBoxModel;
5 | import org.springframework.stereotype.Component;
6 |
7 | @Component
8 | public class PaymentMethodComboBoxModel extends DefaultAbstractComboBoxModel {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/payment/model/PaymentTableModel.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.payment.model;
2 |
3 | import com.danielmichalski.reservations.commons.date.DateFormatterService;
4 | import com.danielmichalski.reservations.domain.payment.entity.PaymentEntity;
5 | import com.danielmichalski.reservations.ui.shared.model.DefaultTableModel;
6 | import com.danielmichalski.reservations.util.constant.ConstMessagesEN;
7 | import lombok.AllArgsConstructor;
8 | import org.apache.logging.log4j.util.Strings;
9 | import org.springframework.stereotype.Component;
10 |
11 | @Component
12 | @AllArgsConstructor
13 | public class PaymentTableModel extends DefaultTableModel {
14 |
15 | private static final int PAYMENT_METHOD_INDEX = 0;
16 | private static final int VALUE_INDEX = 1;
17 | private static final int DATE_OF_PAYMENT_INDEX = 2;
18 |
19 | private final DateFormatterService dateFormatterService;
20 |
21 | @Override
22 | public Object getValueAt(int rowIndex, int columnIndex) {
23 | PaymentEntity payment = entities.get(rowIndex);
24 | switch (columnIndex) {
25 | case PAYMENT_METHOD_INDEX:
26 | return payment.getPaymentMethod();
27 | case VALUE_INDEX:
28 | return payment.getValue();
29 | case DATE_OF_PAYMENT_INDEX:
30 | return dateFormatterService.formatDate(payment.getDateOfPayment());
31 | default:
32 | return Strings.EMPTY;
33 | }
34 | }
35 |
36 | @Override
37 | public String[] getColumnLabels() {
38 | return new String[]{
39 | ConstMessagesEN.Labels.PAYMENT_METHOD,
40 | ConstMessagesEN.Labels.VALUE,
41 | ConstMessagesEN.Labels.DATE_OF_PAYMENT};
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/payment/view/PaymentTableBtnPanel.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.payment.view;
2 |
3 | import com.danielmichalski.reservations.util.constant.ConstMessagesEN;
4 | import jakarta.annotation.PostConstruct;
5 | import lombok.Getter;
6 | import org.springframework.stereotype.Component;
7 |
8 | import javax.swing.JButton;
9 | import javax.swing.JPanel;
10 |
11 | @Component
12 | @Getter
13 | public class PaymentTableBtnPanel extends JPanel {
14 |
15 | private JButton addBtn;
16 | private JButton removeBtn;
17 |
18 | @PostConstruct
19 | @SuppressWarnings("PMD.UnusedPrivateMethod")
20 | private void preparePanel() {
21 | initComponents();
22 | }
23 |
24 | private void initComponents() {
25 | addBtn = new JButton(ConstMessagesEN.Labels.ADD_BTN);
26 | add(addBtn);
27 |
28 | removeBtn = new JButton(ConstMessagesEN.Labels.REMOVE_BTN);
29 | add(removeBtn);
30 | }
31 |
32 | }
33 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/payment/view/PaymentTableFrame.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.payment.view;
2 |
3 | import com.danielmichalski.reservations.util.constant.ConstMessagesEN;
4 | import jakarta.annotation.PostConstruct;
5 | import lombok.AllArgsConstructor;
6 | import lombok.Getter;
7 | import org.springframework.stereotype.Component;
8 |
9 | import javax.swing.JFrame;
10 | import javax.swing.WindowConstants;
11 | import java.awt.BorderLayout;
12 |
13 | @Component
14 | @AllArgsConstructor
15 | @Getter
16 | public class PaymentTableFrame extends JFrame {
17 |
18 | private static final int DEFAULT_WIDTH = 500;
19 | private static final int DEFAULT_HEIGHT = 300;
20 |
21 | private final PaymentTablePanel tablePanel;
22 | private final PaymentTableBtnPanel tableBtnPanel;
23 |
24 | @PostConstruct
25 | @SuppressWarnings("PMD.UnusedPrivateMethod")
26 | private void prepareFrame() {
27 | setFrameUp();
28 | initComponents();
29 | }
30 |
31 | private void setFrameUp() {
32 | setTitle(ConstMessagesEN.Labels.PAYMENTS);
33 | setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
34 | setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
35 | setLocationRelativeTo(null);
36 | setResizable(false);
37 | }
38 |
39 | private void initComponents() {
40 | add(tablePanel, BorderLayout.CENTER);
41 | add(tableBtnPanel, BorderLayout.SOUTH);
42 | }
43 |
44 | }
45 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/payment/view/PaymentTablePanel.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.payment.view;
2 |
3 | import com.danielmichalski.reservations.ui.forms.payment.model.PaymentTableModel;
4 | import jakarta.annotation.PostConstruct;
5 | import lombok.Getter;
6 | import org.springframework.stereotype.Component;
7 |
8 | import javax.swing.JPanel;
9 | import javax.swing.JScrollPane;
10 | import javax.swing.JTable;
11 | import javax.swing.ListSelectionModel;
12 | import java.awt.BorderLayout;
13 |
14 | @Component
15 | @Getter
16 | public class PaymentTablePanel extends JPanel {
17 |
18 | private final PaymentTableModel tableModel;
19 |
20 | private JTable table;
21 |
22 | PaymentTablePanel(PaymentTableModel tableModel) {
23 | this.tableModel = tableModel;
24 | }
25 |
26 | @PostConstruct
27 | @SuppressWarnings("PMD.UnusedPrivateMethod")
28 | private void preparePanel() {
29 | setPanelUp();
30 | initComponents();
31 | }
32 |
33 | private void setPanelUp() {
34 | setLayout(new BorderLayout());
35 | }
36 |
37 | private void initComponents() {
38 | table = new JTable(tableModel);
39 | table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
40 |
41 | JScrollPane paneWithTable = new JScrollPane(table);
42 | add(paneWithTable, BorderLayout.CENTER);
43 | }
44 |
45 | }
46 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/payment/view/modal/AddPaymentFrame.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.payment.view.modal;
2 |
3 | import com.danielmichalski.reservations.util.constant.ConstMessagesEN;
4 | import jakarta.annotation.PostConstruct;
5 | import lombok.AllArgsConstructor;
6 | import lombok.Getter;
7 | import org.springframework.stereotype.Component;
8 |
9 | import javax.swing.JDialog;
10 | import javax.swing.WindowConstants;
11 | import java.awt.BorderLayout;
12 |
13 | @Component
14 | @AllArgsConstructor
15 | @Getter
16 | public class AddPaymentFrame extends JDialog {
17 |
18 | private final PaymentFormPanel formPanel;
19 | private final PaymentFormBtnPanel formBtnPanel;
20 |
21 | @PostConstruct
22 | @SuppressWarnings("PMD.UnusedPrivateMethod")
23 | private void prepareFrame() {
24 | setFrameUp();
25 | initComponents();
26 | pack();
27 | }
28 |
29 | private void setFrameUp() {
30 | setTitle(ConstMessagesEN.DialogTitles.PAYMENT_MODAL);
31 | setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
32 | setLocationRelativeTo(null);
33 | setResizable(false);
34 | setModal(true);
35 | }
36 |
37 | private void initComponents() {
38 | add(formPanel, BorderLayout.CENTER);
39 | add(formBtnPanel, BorderLayout.SOUTH);
40 | }
41 |
42 | }
43 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/payment/view/modal/PaymentFormBtnPanel.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.payment.view.modal;
2 |
3 | import com.danielmichalski.reservations.util.constant.ConstMessagesEN;
4 | import jakarta.annotation.PostConstruct;
5 | import lombok.Getter;
6 | import org.springframework.stereotype.Component;
7 |
8 | import javax.swing.JButton;
9 | import javax.swing.JPanel;
10 |
11 | @Component
12 | @Getter
13 | public class PaymentFormBtnPanel extends JPanel {
14 |
15 | private JButton saveBtn;
16 | private JButton cancelBtn;
17 |
18 | @PostConstruct
19 | @SuppressWarnings("PMD.UnusedPrivateMethod")
20 | private void preparePanel() {
21 | initComponents();
22 | }
23 |
24 | private void initComponents() {
25 | saveBtn = new JButton(ConstMessagesEN.Labels.ADD_BTN);
26 | add(saveBtn);
27 |
28 | cancelBtn = new JButton(ConstMessagesEN.Labels.CANCEL_BTN);
29 | add(cancelBtn);
30 | }
31 |
32 | }
33 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/paymentmethod/model/PaymentMethodTableModel.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.paymentmethod.model;
2 |
3 | import com.danielmichalski.reservations.domain.payment.entity.PaymentMethodEntity;
4 | import com.danielmichalski.reservations.ui.shared.model.DefaultTableModel;
5 | import com.danielmichalski.reservations.util.constant.ConstMessagesEN;
6 | import org.apache.logging.log4j.util.Strings;
7 | import org.springframework.stereotype.Component;
8 |
9 | @Component
10 | public class PaymentMethodTableModel extends DefaultTableModel {
11 |
12 | private static final int NAME_INDEX = 0;
13 |
14 | @Override
15 | public Object getValueAt(int rowIndex, int columnIndex) {
16 | PaymentMethodEntity paymentMethod = entities.get(rowIndex);
17 | if (columnIndex == NAME_INDEX) {
18 | return paymentMethod.getName();
19 | }
20 | return Strings.EMPTY;
21 | }
22 |
23 | @Override
24 | public String[] getColumnLabels() {
25 | return new String[]{
26 | ConstMessagesEN.Labels.PAYMENT_METHOD};
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/paymentmethod/view/PaymentMethodTableBtnPanel.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.paymentmethod.view;
2 |
3 | import com.danielmichalski.reservations.util.constant.ConstMessagesEN;
4 | import jakarta.annotation.PostConstruct;
5 | import lombok.Getter;
6 | import org.springframework.stereotype.Component;
7 |
8 | import javax.swing.JButton;
9 | import javax.swing.JPanel;
10 |
11 | @Component
12 | @Getter
13 | public class PaymentMethodTableBtnPanel extends JPanel {
14 |
15 | private JButton addBtn;
16 | private JButton removeBtn;
17 |
18 | @PostConstruct
19 | @SuppressWarnings("PMD.UnusedPrivateMethod")
20 | private void preparePanel() {
21 | initComponents();
22 | }
23 |
24 | private void initComponents() {
25 | addBtn = new JButton(ConstMessagesEN.Labels.ADD_BTN);
26 | add(addBtn);
27 |
28 | removeBtn = new JButton(ConstMessagesEN.Labels.REMOVE_BTN);
29 | add(removeBtn);
30 | }
31 |
32 | }
33 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/paymentmethod/view/PaymentMethodTableFrame.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.paymentmethod.view;
2 |
3 | import com.danielmichalski.reservations.util.constant.ConstMessagesEN;
4 | import jakarta.annotation.PostConstruct;
5 | import lombok.AllArgsConstructor;
6 | import lombok.Getter;
7 | import org.springframework.stereotype.Component;
8 |
9 | import javax.swing.JFrame;
10 | import javax.swing.WindowConstants;
11 | import java.awt.BorderLayout;
12 |
13 | @Component
14 | @AllArgsConstructor
15 | @Getter
16 | public class PaymentMethodTableFrame extends JFrame {
17 |
18 | private static final int DEFAULT_WIDTH = 500;
19 | private static final int DEFAULT_HEIGHT = 300;
20 |
21 | private final PaymentMethodTablePanel tablePanel;
22 | private final PaymentMethodTableBtnPanel tableBtnPanel;
23 |
24 | @PostConstruct
25 | @SuppressWarnings("PMD.UnusedPrivateMethod")
26 | private void prepareFrame() {
27 | setFrameUp();
28 | initComponents();
29 | }
30 |
31 | private void setFrameUp() {
32 | setTitle(ConstMessagesEN.Labels.PAYMENT_METHODS);
33 | setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
34 | setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
35 | setLocationRelativeTo(null);
36 | setResizable(false);
37 | }
38 |
39 | private void initComponents() {
40 | add(tablePanel, BorderLayout.CENTER);
41 | add(tableBtnPanel, BorderLayout.SOUTH);
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/paymentmethod/view/PaymentMethodTablePanel.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.paymentmethod.view;
2 |
3 | import com.danielmichalski.reservations.ui.forms.paymentmethod.model.PaymentMethodTableModel;
4 | import jakarta.annotation.PostConstruct;
5 | import lombok.Getter;
6 | import org.springframework.stereotype.Component;
7 |
8 | import javax.swing.JPanel;
9 | import javax.swing.JScrollPane;
10 | import javax.swing.JTable;
11 | import javax.swing.ListSelectionModel;
12 | import java.awt.BorderLayout;
13 |
14 | @Component
15 | @Getter
16 | public class PaymentMethodTablePanel extends JPanel {
17 |
18 | private final PaymentMethodTableModel tableModel;
19 |
20 | private JTable table;
21 |
22 | PaymentMethodTablePanel(PaymentMethodTableModel tableModel) {
23 | this.tableModel = tableModel;
24 | }
25 |
26 | @PostConstruct
27 | @SuppressWarnings("PMD.UnusedPrivateMethod")
28 | private void preparePanel() {
29 | setPanelUp();
30 | initComponents();
31 | }
32 |
33 | private void setPanelUp() {
34 | setLayout(new BorderLayout());
35 | }
36 |
37 | private void initComponents() {
38 | table = new JTable(tableModel);
39 | table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
40 |
41 | JScrollPane paneWithTable = new JScrollPane(table);
42 | add(paneWithTable, BorderLayout.CENTER);
43 | }
44 |
45 | }
46 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/paymentmethod/view/modal/AddPaymentMethodFrame.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.paymentmethod.view.modal;
2 |
3 | import com.danielmichalski.reservations.util.constant.ConstMessagesEN;
4 | import jakarta.annotation.PostConstruct;
5 | import lombok.AllArgsConstructor;
6 | import lombok.Getter;
7 | import org.springframework.stereotype.Component;
8 |
9 | import javax.swing.JDialog;
10 | import javax.swing.WindowConstants;
11 | import java.awt.BorderLayout;
12 |
13 | @Component
14 | @AllArgsConstructor
15 | @Getter
16 | public class AddPaymentMethodFrame extends JDialog {
17 |
18 | private final PaymentMethodFormPanel formPanel;
19 | private final PaymentMethodFormBtnPanel formBtnPanel;
20 |
21 | @PostConstruct
22 | @SuppressWarnings("PMD.UnusedPrivateMethod")
23 | private void prepareFrame() {
24 | setFrameUp();
25 | initComponents();
26 | pack();
27 | }
28 |
29 | private void setFrameUp() {
30 | setTitle(ConstMessagesEN.DialogTitles.PAYMENT_METHOD_MODAL);
31 | setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
32 | setLocationRelativeTo(null);
33 | setResizable(false);
34 | setModal(true);
35 | }
36 |
37 | private void initComponents() {
38 | add(formPanel, BorderLayout.CENTER);
39 | add(formBtnPanel, BorderLayout.SOUTH);
40 | }
41 |
42 | }
43 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/paymentmethod/view/modal/PaymentMethodFormBtnPanel.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.paymentmethod.view.modal;
2 |
3 | import com.danielmichalski.reservations.util.constant.ConstMessagesEN;
4 | import jakarta.annotation.PostConstruct;
5 | import lombok.Getter;
6 | import org.springframework.stereotype.Component;
7 |
8 | import javax.swing.JButton;
9 | import javax.swing.JPanel;
10 |
11 | @Component
12 | @Getter
13 | public class PaymentMethodFormBtnPanel extends JPanel {
14 |
15 | private JButton saveBtn;
16 | private JButton cancelBtn;
17 |
18 | @PostConstruct
19 | @SuppressWarnings("PMD.UnusedPrivateMethod")
20 | private void preparePanel() {
21 | initComponents();
22 | }
23 |
24 | private void initComponents() {
25 | saveBtn = new JButton(ConstMessagesEN.Labels.ADD_BTN);
26 | add(saveBtn);
27 |
28 | cancelBtn = new JButton(ConstMessagesEN.Labels.CANCEL_BTN);
29 | add(cancelBtn);
30 | }
31 |
32 | }
33 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/paymentmethod/view/modal/PaymentMethodFormPanel.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.paymentmethod.view.modal;
2 |
3 | import com.danielmichalski.reservations.domain.payment.entity.PaymentMethodEntity;
4 | import com.danielmichalski.reservations.util.border.Borders;
5 | import com.danielmichalski.reservations.util.constant.ConstMessagesEN;
6 | import jakarta.annotation.PostConstruct;
7 | import org.apache.logging.log4j.util.Strings;
8 | import org.springframework.stereotype.Component;
9 |
10 | import javax.swing.JLabel;
11 | import javax.swing.JPanel;
12 | import javax.swing.JTextField;
13 | import java.awt.GridLayout;
14 |
15 | @Component
16 | public class PaymentMethodFormPanel extends JPanel {
17 |
18 | private static final int LAYOUT_ROWS = 1;
19 | private static final int LAYOUT_COLS = 2;
20 | private static final int HORIZONTAL_GAP = 0;
21 | private static final int VERTICAL_GAP = 20;
22 | private static final int TEXT_FIELD_COLUMNS = 20;
23 |
24 | private JTextField paymentMethodTF;
25 |
26 | @PostConstruct
27 | @SuppressWarnings("PMD.UnusedPrivateMethod")
28 | private void preparePanel() {
29 | setPanelUp();
30 | initComponents();
31 | }
32 |
33 | private void setPanelUp() {
34 | setBorder(Borders.createEmptyBorder());
35 | setLayout(new GridLayout(LAYOUT_ROWS, LAYOUT_COLS, HORIZONTAL_GAP, VERTICAL_GAP));
36 | }
37 |
38 | private void initComponents() {
39 | JLabel paymentMethodLbl = new JLabel(ConstMessagesEN.Labels.PAYMENT_METHOD);
40 | paymentMethodTF = new JTextField(TEXT_FIELD_COLUMNS);
41 | add(paymentMethodLbl);
42 | add(paymentMethodTF);
43 | }
44 |
45 | public PaymentMethodEntity getEntityFromForm() {
46 | return new PaymentMethodEntity(paymentMethodTF.getText());
47 | }
48 |
49 | public void clearForm() {
50 | paymentMethodTF.setText(Strings.EMPTY);
51 | }
52 |
53 | }
54 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/rate/model/RateTableModel.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.rate.model;
2 |
3 | import com.danielmichalski.reservations.domain.rate.entity.RateEntity;
4 | import com.danielmichalski.reservations.ui.shared.model.DefaultTableModel;
5 | import com.danielmichalski.reservations.util.constant.ConstMessagesEN;
6 | import org.apache.logging.log4j.util.Strings;
7 | import org.springframework.stereotype.Component;
8 |
9 | @Component
10 | public class RateTableModel extends DefaultTableModel {
11 |
12 | private static final int ROOM_INDEX = 0;
13 | private static final int ROOM_TYPE_INDEX = 1;
14 | private static final int DEFAULT_RATE_INDEX = 2;
15 |
16 | @Override
17 | public Object getValueAt(int rowIndex, int columnIndex) {
18 | RateEntity rate = entities.get(rowIndex);
19 | switch (columnIndex) {
20 | case ROOM_INDEX:
21 | return rate.getRoom();
22 | case ROOM_TYPE_INDEX:
23 | return rate.getRoomType();
24 | case DEFAULT_RATE_INDEX:
25 | return rate.getDefaultRate();
26 | default:
27 | return Strings.EMPTY;
28 | }
29 | }
30 |
31 | @Override
32 | public String[] getColumnLabels() {
33 | return new String[]{
34 | ConstMessagesEN.Labels.ROOM,
35 | ConstMessagesEN.Labels.ROOM_TYPE,
36 | ConstMessagesEN.Labels.BASIC_RATE};
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/rate/model/RoomComboBoxModel.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.rate.model;
2 |
3 | import com.danielmichalski.reservations.domain.room.entity.RoomEntity;
4 | import com.danielmichalski.reservations.ui.shared.model.DefaultAbstractComboBoxModel;
5 | import org.springframework.stereotype.Component;
6 |
7 | @Component
8 | public class RoomComboBoxModel extends DefaultAbstractComboBoxModel {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/rate/model/RoomTypeComboBoxModel.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.rate.model;
2 |
3 | import com.danielmichalski.reservations.domain.room.entity.RoomTypeEntity;
4 | import com.danielmichalski.reservations.ui.shared.model.DefaultAbstractComboBoxModel;
5 | import org.springframework.stereotype.Component;
6 |
7 | @Component
8 | public class RoomTypeComboBoxModel extends DefaultAbstractComboBoxModel {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/rate/view/RateTableBtnPanel.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.rate.view;
2 |
3 | import com.danielmichalski.reservations.util.constant.ConstMessagesEN;
4 | import jakarta.annotation.PostConstruct;
5 | import lombok.Getter;
6 | import org.springframework.stereotype.Component;
7 |
8 | import javax.swing.JButton;
9 | import javax.swing.JPanel;
10 |
11 | @Component
12 | @Getter
13 | public class RateTableBtnPanel extends JPanel {
14 |
15 | private JButton addBtn;
16 | private JButton removeBtn;
17 |
18 | @PostConstruct
19 | @SuppressWarnings("PMD.UnusedPrivateMethod")
20 | private void preparePanel() {
21 | initComponents();
22 | }
23 |
24 | private void initComponents() {
25 | addBtn = new JButton(ConstMessagesEN.Labels.ADD_BTN);
26 | add(addBtn);
27 |
28 | removeBtn = new JButton(ConstMessagesEN.Labels.REMOVE_BTN);
29 | add(removeBtn);
30 | }
31 |
32 | }
33 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/rate/view/RateTableFrame.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.rate.view;
2 |
3 | import com.danielmichalski.reservations.util.constant.ConstMessagesEN;
4 | import jakarta.annotation.PostConstruct;
5 | import lombok.AllArgsConstructor;
6 | import lombok.Getter;
7 | import org.springframework.stereotype.Component;
8 |
9 | import javax.swing.JFrame;
10 | import javax.swing.WindowConstants;
11 | import java.awt.BorderLayout;
12 |
13 | @Component
14 | @AllArgsConstructor
15 | @Getter
16 | public class RateTableFrame extends JFrame {
17 |
18 | private static final int DEFAULT_WIDTH = 500;
19 | private static final int DEFAULT_HEIGHT = 300;
20 |
21 | private final RateTablePanel tablePanel;
22 | private final RateTableBtnPanel tableBtnPanel;
23 |
24 | @PostConstruct
25 | @SuppressWarnings("PMD.UnusedPrivateMethod")
26 | private void prepareFrame() {
27 | setFrameUp();
28 | initComponents();
29 | }
30 |
31 | private void setFrameUp() {
32 | setTitle(ConstMessagesEN.Labels.RATES);
33 | setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
34 | setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
35 | setLocationRelativeTo(null);
36 | setResizable(false);
37 | }
38 |
39 | private void initComponents() {
40 | add(tablePanel, BorderLayout.CENTER);
41 | add(tableBtnPanel, BorderLayout.SOUTH);
42 | }
43 |
44 | }
45 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/rate/view/RateTablePanel.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.rate.view;
2 |
3 | import com.danielmichalski.reservations.ui.forms.rate.model.RateTableModel;
4 | import jakarta.annotation.PostConstruct;
5 | import lombok.Getter;
6 | import org.springframework.stereotype.Component;
7 |
8 | import javax.swing.JPanel;
9 | import javax.swing.JScrollPane;
10 | import javax.swing.JTable;
11 | import javax.swing.ListSelectionModel;
12 | import java.awt.BorderLayout;
13 |
14 | @Component
15 | @Getter
16 | public class RateTablePanel extends JPanel {
17 |
18 | private final RateTableModel tableModel;
19 |
20 | private JTable table;
21 |
22 | RateTablePanel(RateTableModel tableModel) {
23 | this.tableModel = tableModel;
24 | }
25 |
26 | @PostConstruct
27 | @SuppressWarnings("PMD.UnusedPrivateMethod")
28 | private void preparePanel() {
29 | setPanelUp();
30 | initComponents();
31 | }
32 |
33 | private void setPanelUp() {
34 | setLayout(new BorderLayout());
35 | }
36 |
37 | private void initComponents() {
38 | table = new JTable(tableModel);
39 | table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
40 |
41 | JScrollPane paneWithTable = new JScrollPane(table);
42 | add(paneWithTable, BorderLayout.CENTER);
43 | }
44 |
45 | }
46 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/rate/view/modal/AddRateFame.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.rate.view.modal;
2 |
3 | import com.danielmichalski.reservations.util.constant.ConstMessagesEN;
4 | import jakarta.annotation.PostConstruct;
5 | import lombok.AllArgsConstructor;
6 | import lombok.Getter;
7 | import org.springframework.stereotype.Component;
8 |
9 | import javax.swing.JDialog;
10 | import javax.swing.WindowConstants;
11 | import java.awt.BorderLayout;
12 |
13 | @Component
14 | @AllArgsConstructor
15 | @Getter
16 | public class AddRateFame extends JDialog {
17 |
18 | private final RateFormPanel formPanel;
19 | private final RateFormBtnPanel formBtnPanel;
20 |
21 | @PostConstruct
22 | @SuppressWarnings("PMD.UnusedPrivateMethod")
23 | private void prepareFrame() {
24 | setFrameUp();
25 | initComponents();
26 | pack();
27 | }
28 |
29 | private void setFrameUp() {
30 | setTitle(ConstMessagesEN.DialogTitles.RATE_MODAL);
31 | setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
32 | setLocationRelativeTo(null);
33 | setResizable(false);
34 | setModal(true);
35 | }
36 |
37 | private void initComponents() {
38 | add(formPanel, BorderLayout.CENTER);
39 | add(formBtnPanel, BorderLayout.SOUTH);
40 | }
41 |
42 | }
43 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/rate/view/modal/RateFormBtnPanel.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.rate.view.modal;
2 |
3 | import com.danielmichalski.reservations.util.constant.ConstMessagesEN;
4 | import jakarta.annotation.PostConstruct;
5 | import lombok.Getter;
6 | import org.springframework.stereotype.Component;
7 |
8 | import javax.swing.JButton;
9 | import javax.swing.JPanel;
10 |
11 | @Component
12 | @Getter
13 | public class RateFormBtnPanel extends JPanel {
14 |
15 | private JButton saveBtn;
16 | private JButton cancelBtn;
17 |
18 | @PostConstruct
19 | @SuppressWarnings("PMD.UnusedPrivateMethod")
20 | private void preparePanel() {
21 | initComponents();
22 | }
23 |
24 | private void initComponents() {
25 | saveBtn = new JButton(ConstMessagesEN.Labels.ADD_BTN);
26 | add(saveBtn);
27 |
28 | cancelBtn = new JButton(ConstMessagesEN.Labels.CANCEL_BTN);
29 | add(cancelBtn);
30 | }
31 |
32 | }
33 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/reservation/model/ClientComboBoxModel.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.reservation.model;
2 |
3 | import com.danielmichalski.reservations.domain.client.entity.ClientEntity;
4 | import com.danielmichalski.reservations.ui.shared.model.DefaultAbstractComboBoxModel;
5 | import org.springframework.stereotype.Component;
6 |
7 | @Component
8 | public class ClientComboBoxModel extends DefaultAbstractComboBoxModel {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/reservation/model/PaymentComboBoxModel.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.reservation.model;
2 |
3 | import com.danielmichalski.reservations.domain.payment.entity.PaymentEntity;
4 | import com.danielmichalski.reservations.ui.shared.model.DefaultAbstractComboBoxModel;
5 | import org.springframework.stereotype.Component;
6 |
7 | @Component
8 | public class PaymentComboBoxModel extends DefaultAbstractComboBoxModel {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/reservation/model/ReservationStatusComboBoxModel.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.reservation.model;
2 |
3 | import com.danielmichalski.reservations.domain.reservation.entity.ReservationStatusEntity;
4 | import com.danielmichalski.reservations.ui.shared.model.DefaultAbstractComboBoxModel;
5 | import org.springframework.stereotype.Component;
6 |
7 | @Component
8 | public class ReservationStatusComboBoxModel extends DefaultAbstractComboBoxModel {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/reservation/view/ReservationTableBtnPanel.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.reservation.view;
2 |
3 | import com.danielmichalski.reservations.util.constant.ConstMessagesEN;
4 | import jakarta.annotation.PostConstruct;
5 | import lombok.Getter;
6 | import org.springframework.stereotype.Component;
7 |
8 | import javax.swing.JButton;
9 | import javax.swing.JPanel;
10 |
11 | @Component
12 | @Getter
13 | public class ReservationTableBtnPanel extends JPanel {
14 |
15 | private JButton addBtn;
16 | private JButton removeBtn;
17 |
18 | @PostConstruct
19 | @SuppressWarnings("PMD.UnusedPrivateMethod")
20 | private void preparePanel() {
21 | initComponents();
22 | }
23 |
24 | private void initComponents() {
25 | addBtn = new JButton(ConstMessagesEN.Labels.ADD_BTN);
26 | add(addBtn);
27 |
28 | removeBtn = new JButton(ConstMessagesEN.Labels.REMOVE_BTN);
29 | add(removeBtn);
30 | }
31 |
32 | }
33 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/reservation/view/ReservationTableFrame.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.reservation.view;
2 |
3 | import com.danielmichalski.reservations.util.constant.ConstMessagesEN;
4 | import jakarta.annotation.PostConstruct;
5 | import lombok.AllArgsConstructor;
6 | import lombok.Getter;
7 | import org.springframework.stereotype.Component;
8 |
9 | import javax.swing.JFrame;
10 | import javax.swing.WindowConstants;
11 | import java.awt.BorderLayout;
12 |
13 | @Component
14 | @AllArgsConstructor
15 | @Getter
16 | public class ReservationTableFrame extends JFrame {
17 |
18 | private static final int DEFAULT_WIDTH = 900;
19 | private static final int DEFAULT_HEIGHT = 300;
20 |
21 | private final ReservationTablePanel tablePanel;
22 | private final ReservationTableBtnPanel tableBtnPanel;
23 |
24 | @PostConstruct
25 | @SuppressWarnings("PMD.UnusedPrivateMethod")
26 | private void prepareFrame() {
27 | setFrameUp();
28 | initComponents();
29 | }
30 |
31 | private void setFrameUp() {
32 | setTitle(ConstMessagesEN.Labels.RESERVATIONS);
33 | setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
34 | setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
35 | setLocationRelativeTo(null);
36 | setResizable(false);
37 | }
38 |
39 | private void initComponents() {
40 | add(tablePanel, BorderLayout.CENTER);
41 | add(tableBtnPanel, BorderLayout.SOUTH);
42 | }
43 |
44 | }
45 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/reservation/view/ReservationTablePanel.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.reservation.view;
2 |
3 | import com.danielmichalski.reservations.ui.forms.reservation.model.ReservationTableModel;
4 | import jakarta.annotation.PostConstruct;
5 | import lombok.Getter;
6 | import org.springframework.stereotype.Component;
7 |
8 | import javax.swing.JPanel;
9 | import javax.swing.JScrollPane;
10 | import javax.swing.JTable;
11 | import javax.swing.ListSelectionModel;
12 | import java.awt.BorderLayout;
13 |
14 | @Component
15 | @Getter
16 | public class ReservationTablePanel extends JPanel {
17 |
18 | private final ReservationTableModel tableModel;
19 |
20 | private JTable table;
21 |
22 | ReservationTablePanel(ReservationTableModel tableModel) {
23 | this.tableModel = tableModel;
24 | }
25 |
26 | @PostConstruct
27 | @SuppressWarnings("PMD.UnusedPrivateMethod")
28 | private void preparePanel() {
29 | setPanelUp();
30 | initComponents();
31 | }
32 |
33 | private void setPanelUp() {
34 | setLayout(new BorderLayout());
35 | }
36 |
37 | private void initComponents() {
38 | table = new JTable(tableModel);
39 | table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
40 |
41 | JScrollPane paneWithTable = new JScrollPane(table);
42 | add(paneWithTable, BorderLayout.CENTER);
43 | }
44 |
45 | }
46 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/reservation/view/modal/AddReservationFrame.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.reservation.view.modal;
2 |
3 | import com.danielmichalski.reservations.util.constant.ConstMessagesEN;
4 | import jakarta.annotation.PostConstruct;
5 | import lombok.AllArgsConstructor;
6 | import lombok.Getter;
7 | import org.springframework.stereotype.Component;
8 |
9 | import javax.swing.JDialog;
10 | import javax.swing.WindowConstants;
11 | import java.awt.BorderLayout;
12 |
13 | @Component
14 | @AllArgsConstructor
15 | @Getter
16 | public class AddReservationFrame extends JDialog {
17 |
18 | private final ReservationFormPanel formPanel;
19 | private final ReservationFormBtnPanel formBtnPanel;
20 |
21 | @PostConstruct
22 | @SuppressWarnings("PMD.UnusedPrivateMethod")
23 | private void prepareFrame() {
24 | setFrameUp();
25 | initComponents();
26 | pack();
27 | }
28 |
29 | private void setFrameUp() {
30 | setTitle(ConstMessagesEN.DialogTitles.RESERVATION_MODAL);
31 | setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
32 | setLocationRelativeTo(null);
33 | setResizable(false);
34 | setModal(true);
35 | }
36 |
37 | private void initComponents() {
38 | add(formPanel, BorderLayout.CENTER);
39 | add(formBtnPanel, BorderLayout.SOUTH);
40 | }
41 |
42 | }
43 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/reservation/view/modal/ReservationFormBtnPanel.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.reservation.view.modal;
2 |
3 | import com.danielmichalski.reservations.util.constant.ConstMessagesEN;
4 | import jakarta.annotation.PostConstruct;
5 | import lombok.Getter;
6 | import org.springframework.stereotype.Component;
7 |
8 | import javax.swing.JButton;
9 | import javax.swing.JPanel;
10 |
11 | @Component
12 | @Getter
13 | public class ReservationFormBtnPanel extends JPanel {
14 |
15 | private JButton saveBtn;
16 | private JButton cancelBtn;
17 |
18 | @PostConstruct
19 | @SuppressWarnings("PMD.UnusedPrivateMethod")
20 | private void preparePanel() {
21 | initComponents();
22 | }
23 |
24 | private void initComponents() {
25 | saveBtn = new JButton(ConstMessagesEN.Labels.ADD_BTN);
26 | add(saveBtn);
27 |
28 | cancelBtn = new JButton(ConstMessagesEN.Labels.CANCEL_BTN);
29 | add(cancelBtn);
30 | }
31 |
32 | }
33 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/reservationstatus/model/ReservationStatusTableModel.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.reservationstatus.model;
2 |
3 | import com.danielmichalski.reservations.domain.reservation.entity.ReservationStatusEntity;
4 | import com.danielmichalski.reservations.ui.shared.model.DefaultTableModel;
5 | import com.danielmichalski.reservations.util.constant.ConstMessagesEN;
6 | import org.apache.logging.log4j.util.Strings;
7 | import org.springframework.stereotype.Component;
8 |
9 | @Component
10 | public class ReservationStatusTableModel extends DefaultTableModel {
11 |
12 | private static final int RESERVATION_STATUS_INDEX = 0;
13 |
14 | @Override
15 | public Object getValueAt(int rowIndex, int columnIndex) {
16 | ReservationStatusEntity reservationStatus = entities.get(rowIndex);
17 | if (columnIndex == RESERVATION_STATUS_INDEX) {
18 | return reservationStatus.getStatus();
19 | }
20 | return Strings.EMPTY;
21 | }
22 |
23 | @Override
24 | public String[] getColumnLabels() {
25 | return new String[]{
26 | ConstMessagesEN.Labels.RESERVATION_STATUS};
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/reservationstatus/view/ReservationStatusTableBtnPanel.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.reservationstatus.view;
2 |
3 | import com.danielmichalski.reservations.util.constant.ConstMessagesEN;
4 | import jakarta.annotation.PostConstruct;
5 | import lombok.Getter;
6 | import org.springframework.stereotype.Component;
7 |
8 | import javax.swing.JButton;
9 | import javax.swing.JPanel;
10 |
11 | @Component
12 | @Getter
13 | public class ReservationStatusTableBtnPanel extends JPanel {
14 |
15 | private JButton addBtn;
16 | private JButton removeBtn;
17 |
18 | @PostConstruct
19 | @SuppressWarnings("PMD.UnusedPrivateMethod")
20 | private void preparePanel() {
21 | initComponents();
22 | }
23 |
24 | private void initComponents() {
25 | addBtn = new JButton(ConstMessagesEN.Labels.ADD_BTN);
26 | add(addBtn);
27 |
28 | removeBtn = new JButton(ConstMessagesEN.Labels.REMOVE_BTN);
29 | add(removeBtn);
30 | }
31 |
32 | }
33 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/reservationstatus/view/ReservationStatusTableFrame.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.reservationstatus.view;
2 |
3 | import com.danielmichalski.reservations.util.constant.ConstMessagesEN;
4 | import jakarta.annotation.PostConstruct;
5 | import lombok.AllArgsConstructor;
6 | import lombok.Getter;
7 | import org.springframework.stereotype.Component;
8 |
9 | import javax.swing.JFrame;
10 | import javax.swing.WindowConstants;
11 | import java.awt.BorderLayout;
12 |
13 | @Component
14 | @AllArgsConstructor
15 | @Getter
16 | public class ReservationStatusTableFrame extends JFrame {
17 |
18 | private static final int DEFAULT_WIDTH = 500;
19 | private static final int DEFAULT_HEIGHT = 300;
20 |
21 | private final ReservationStatusTablePanel tablePanel;
22 | private final ReservationStatusTableBtnPanel tableBtnPanel;
23 |
24 | @PostConstruct
25 | @SuppressWarnings("PMD.UnusedPrivateMethod")
26 | private void prepareFrame() {
27 | setFrameUp();
28 | initComponents();
29 | }
30 |
31 | private void setFrameUp() {
32 | setTitle(ConstMessagesEN.Labels.RESERVATION_STATUSES);
33 | setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
34 | setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
35 | setLocationRelativeTo(null);
36 | setResizable(false);
37 | }
38 |
39 | private void initComponents() {
40 | add(tablePanel, BorderLayout.CENTER);
41 | add(tableBtnPanel, BorderLayout.SOUTH);
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/reservationstatus/view/ReservationStatusTablePanel.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.reservationstatus.view;
2 |
3 | import com.danielmichalski.reservations.ui.forms.reservationstatus.model.ReservationStatusTableModel;
4 | import jakarta.annotation.PostConstruct;
5 | import lombok.Getter;
6 | import org.springframework.stereotype.Component;
7 |
8 | import javax.swing.JPanel;
9 | import javax.swing.JScrollPane;
10 | import javax.swing.JTable;
11 | import javax.swing.ListSelectionModel;
12 | import java.awt.BorderLayout;
13 |
14 | @Component
15 | @Getter
16 | public class ReservationStatusTablePanel extends JPanel {
17 |
18 | private final ReservationStatusTableModel tableModel;
19 |
20 | private JTable table;
21 |
22 | ReservationStatusTablePanel(ReservationStatusTableModel tableModel) {
23 | this.tableModel = tableModel;
24 | }
25 |
26 | @PostConstruct
27 | @SuppressWarnings("PMD.UnusedPrivateMethod")
28 | private void preparePanel() {
29 | setPanelUp();
30 | initComponents();
31 | }
32 |
33 | private void setPanelUp() {
34 | setLayout(new BorderLayout());
35 | }
36 |
37 | private void initComponents() {
38 | table = new JTable(tableModel);
39 | table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
40 |
41 | JScrollPane paneWithTable = new JScrollPane(table);
42 | add(paneWithTable, BorderLayout.CENTER);
43 | }
44 |
45 | }
46 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/reservationstatus/view/modal/AddReservationStatusFrame.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.reservationstatus.view.modal;
2 |
3 | import com.danielmichalski.reservations.util.constant.ConstMessagesEN;
4 | import jakarta.annotation.PostConstruct;
5 | import lombok.AllArgsConstructor;
6 | import lombok.Getter;
7 | import org.springframework.stereotype.Component;
8 |
9 | import javax.swing.JDialog;
10 | import javax.swing.WindowConstants;
11 | import java.awt.BorderLayout;
12 |
13 | @Component
14 | @AllArgsConstructor
15 | @Getter
16 | public class AddReservationStatusFrame extends JDialog {
17 |
18 | private final ReservationStatusFormPanel formPanel;
19 | private final ReservationStatusFormBtnPanel formBtnPanel;
20 |
21 | @PostConstruct
22 | @SuppressWarnings("PMD.UnusedPrivateMethod")
23 | private void prepareFrame() {
24 | setFrameUp();
25 | initComponents();
26 | pack();
27 | }
28 |
29 | private void setFrameUp() {
30 | setTitle(ConstMessagesEN.DialogTitles.ADDRESS_MODAL);
31 | setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
32 | setLocationRelativeTo(null);
33 | setResizable(false);
34 | setModal(true);
35 | }
36 |
37 | private void initComponents() {
38 | add(formPanel, BorderLayout.CENTER);
39 | add(formBtnPanel, BorderLayout.SOUTH);
40 | }
41 |
42 | }
43 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/reservationstatus/view/modal/ReservationStatusFormBtnPanel.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.reservationstatus.view.modal;
2 |
3 | import com.danielmichalski.reservations.util.constant.ConstMessagesEN;
4 | import jakarta.annotation.PostConstruct;
5 | import lombok.Getter;
6 | import org.springframework.stereotype.Component;
7 |
8 | import javax.swing.JButton;
9 | import javax.swing.JPanel;
10 |
11 | @Component
12 | @Getter
13 | public class ReservationStatusFormBtnPanel extends JPanel {
14 |
15 | private JButton saveBtn;
16 | private JButton cancelBtn;
17 |
18 | @PostConstruct
19 | @SuppressWarnings("PMD.UnusedPrivateMethod")
20 | private void preparePanel() {
21 | initComponents();
22 | }
23 |
24 | private void initComponents() {
25 | saveBtn = new JButton(ConstMessagesEN.Labels.ADD_BTN);
26 | add(saveBtn);
27 |
28 | cancelBtn = new JButton(ConstMessagesEN.Labels.CANCEL_BTN);
29 | add(cancelBtn);
30 | }
31 |
32 | }
33 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/reservationstatus/view/modal/ReservationStatusFormPanel.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.reservationstatus.view.modal;
2 |
3 | import com.danielmichalski.reservations.domain.reservation.entity.ReservationStatusEntity;
4 | import com.danielmichalski.reservations.util.border.Borders;
5 | import com.danielmichalski.reservations.util.constant.ConstMessagesEN;
6 | import jakarta.annotation.PostConstruct;
7 | import org.apache.logging.log4j.util.Strings;
8 | import org.springframework.stereotype.Component;
9 |
10 | import javax.swing.JLabel;
11 | import javax.swing.JPanel;
12 | import javax.swing.JTextField;
13 | import java.awt.GridLayout;
14 |
15 | @Component
16 | public class ReservationStatusFormPanel extends JPanel {
17 |
18 | private static final int LAYOUT_ROWS = 1;
19 | private static final int LAYOUT_COLS = 2;
20 | private static final int HORIZONTAL_GAP = 0;
21 | private static final int VERTICAL_GAP = 20;
22 | private static final int TEXT_FIELD_COLUMNS = 20;
23 |
24 | private JTextField reservationStatusTF;
25 |
26 | @PostConstruct
27 | @SuppressWarnings("PMD.UnusedPrivateMethod")
28 | private void preparePanel() {
29 | setPanelUp();
30 | initComponents();
31 | }
32 |
33 | private void setPanelUp() {
34 | setBorder(Borders.createEmptyBorder());
35 | setLayout(new GridLayout(LAYOUT_ROWS, LAYOUT_COLS, HORIZONTAL_GAP, VERTICAL_GAP));
36 | }
37 |
38 | private void initComponents() {
39 | JLabel reservationStatusLbl = new JLabel(ConstMessagesEN.Labels.RESERVATION_STATUS);
40 | reservationStatusTF = new JTextField(TEXT_FIELD_COLUMNS);
41 | add(reservationStatusLbl);
42 | add(reservationStatusTF);
43 | }
44 |
45 | public ReservationStatusEntity getEntityFromForm() {
46 | return new ReservationStatusEntity(
47 | reservationStatusTF.getText()
48 | );
49 | }
50 |
51 | public void clearForm() {
52 | reservationStatusTF.setText(Strings.EMPTY);
53 | }
54 |
55 | }
56 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/room/model/RoomStatusComboBoxModel.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.room.model;
2 |
3 | import com.danielmichalski.reservations.domain.room.entity.RoomStatusEntity;
4 | import com.danielmichalski.reservations.ui.shared.model.DefaultAbstractComboBoxModel;
5 | import org.springframework.stereotype.Component;
6 |
7 | @Component
8 | public class RoomStatusComboBoxModel extends DefaultAbstractComboBoxModel {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/room/model/RoomTableModel.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.room.model;
2 |
3 | import com.danielmichalski.reservations.domain.room.entity.RoomEntity;
4 | import com.danielmichalski.reservations.ui.shared.model.DefaultTableModel;
5 | import com.danielmichalski.reservations.util.constant.ConstMessagesEN;
6 | import org.apache.logging.log4j.util.Strings;
7 | import org.springframework.stereotype.Component;
8 |
9 | @Component
10 | public class RoomTableModel extends DefaultTableModel {
11 |
12 | private static final int ROOM_STATUS_INDEX = 0;
13 | private static final int ROOM_NUMBER_OF_PEOPLE_INDEX = 1;
14 | private static final int ROOM_DESCRIPTION_INDEX = 2;
15 |
16 | @Override
17 | public Object getValueAt(int rowIndex, int columnIndex) {
18 | RoomEntity room = entities.get(rowIndex);
19 | switch (columnIndex) {
20 | case ROOM_STATUS_INDEX:
21 | return room.getRoomStatus();
22 | case ROOM_NUMBER_OF_PEOPLE_INDEX:
23 | return room.getNumberOfPeople();
24 | case ROOM_DESCRIPTION_INDEX:
25 | return room.getDescription();
26 | default:
27 | return Strings.EMPTY;
28 | }
29 | }
30 |
31 | @Override
32 | public String[] getColumnLabels() {
33 | return new String[]{
34 | ConstMessagesEN.Labels.ROOM_STATUS,
35 | ConstMessagesEN.Labels.ROOM_NUMBER_OF_PEOPLE,
36 | ConstMessagesEN.Labels.ROOM_DESCRIPTION};
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/room/view/RoomTableBtnPanel.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.room.view;
2 |
3 | import com.danielmichalski.reservations.util.constant.ConstMessagesEN;
4 | import jakarta.annotation.PostConstruct;
5 | import lombok.Getter;
6 | import org.springframework.stereotype.Component;
7 |
8 | import javax.swing.JButton;
9 | import javax.swing.JPanel;
10 |
11 | @Component
12 | @Getter
13 | public class RoomTableBtnPanel extends JPanel {
14 |
15 | private JButton addBtn;
16 | private JButton removeBtn;
17 |
18 | @PostConstruct
19 | @SuppressWarnings("PMD.UnusedPrivateMethod")
20 | private void preparePanel() {
21 | initComponents();
22 | }
23 |
24 | private void initComponents() {
25 | addBtn = new JButton(ConstMessagesEN.Labels.ADD_BTN);
26 | add(addBtn);
27 |
28 | removeBtn = new JButton(ConstMessagesEN.Labels.REMOVE_BTN);
29 | add(removeBtn);
30 | }
31 |
32 | public JButton getAddBtn() {
33 | return addBtn;
34 | }
35 |
36 | public JButton getRemoveBtn() {
37 | return removeBtn;
38 | }
39 |
40 | }
41 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/room/view/RoomTableFrame.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.room.view;
2 |
3 | import com.danielmichalski.reservations.util.constant.ConstMessagesEN;
4 | import jakarta.annotation.PostConstruct;
5 | import lombok.AllArgsConstructor;
6 | import lombok.Getter;
7 | import org.springframework.stereotype.Component;
8 |
9 | import javax.swing.JFrame;
10 | import javax.swing.WindowConstants;
11 | import java.awt.BorderLayout;
12 |
13 | @Component
14 | @AllArgsConstructor
15 | @Getter
16 | public class RoomTableFrame extends JFrame {
17 |
18 | private static final int DEFAULT_WIDTH = 500;
19 | private static final int DEFAULT_HEIGHT = 300;
20 |
21 | private final RoomTablePanel tablePanel;
22 | private final RoomTableBtnPanel tableBtnPanel;
23 |
24 | @PostConstruct
25 | @SuppressWarnings("PMD.UnusedPrivateMethod")
26 | private void preparePanel() {
27 | setFrameUp();
28 | initComponents();
29 | }
30 |
31 | private void setFrameUp() {
32 | setTitle(ConstMessagesEN.Labels.ROOMS);
33 | setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
34 | setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
35 | setLocationRelativeTo(null);
36 | setResizable(false);
37 | }
38 |
39 | private void initComponents() {
40 | add(tablePanel, BorderLayout.CENTER);
41 | add(tableBtnPanel, BorderLayout.SOUTH);
42 | }
43 |
44 | }
45 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/room/view/RoomTablePanel.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.room.view;
2 |
3 | import com.danielmichalski.reservations.ui.forms.room.model.RoomTableModel;
4 | import jakarta.annotation.PostConstruct;
5 | import lombok.Getter;
6 | import org.springframework.stereotype.Component;
7 |
8 | import javax.swing.JPanel;
9 | import javax.swing.JScrollPane;
10 | import javax.swing.JTable;
11 | import javax.swing.ListSelectionModel;
12 | import java.awt.BorderLayout;
13 |
14 | @Component
15 | @Getter
16 | public class RoomTablePanel extends JPanel {
17 |
18 | private final RoomTableModel tableModel;
19 |
20 | private JTable table;
21 |
22 | RoomTablePanel(RoomTableModel tableModel) {
23 | this.tableModel = tableModel;
24 | }
25 |
26 | @PostConstruct
27 | @SuppressWarnings("PMD.UnusedPrivateMethod")
28 | private void preparePanel() {
29 | setPanelUp();
30 | initComponents();
31 | }
32 |
33 | private void setPanelUp() {
34 | setLayout(new BorderLayout());
35 | }
36 |
37 | private void initComponents() {
38 | table = new JTable(tableModel);
39 | table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
40 |
41 | JScrollPane paneWithTable = new JScrollPane(table);
42 | add(paneWithTable, BorderLayout.CENTER);
43 | }
44 |
45 | }
46 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/room/view/modal/AddRoomFrame.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.room.view.modal;
2 |
3 | import com.danielmichalski.reservations.util.constant.ConstMessagesEN;
4 | import jakarta.annotation.PostConstruct;
5 | import lombok.AllArgsConstructor;
6 | import lombok.Getter;
7 | import org.springframework.stereotype.Component;
8 |
9 | import javax.swing.JDialog;
10 | import javax.swing.WindowConstants;
11 | import java.awt.BorderLayout;
12 |
13 | @Component
14 | @AllArgsConstructor
15 | @Getter
16 | public class AddRoomFrame extends JDialog {
17 |
18 | private final RoomFormPanel formPanel;
19 | private final RoomFormBtnPanel formBtnPanel;
20 |
21 | @PostConstruct
22 | @SuppressWarnings("PMD.UnusedPrivateMethod")
23 | private void prepareFrame() {
24 | setFrameUp();
25 | initComponents();
26 | pack();
27 | }
28 |
29 | private void setFrameUp() {
30 | setTitle(ConstMessagesEN.DialogTitles.ROOM_MODAL);
31 | setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
32 | setLocationRelativeTo(null);
33 | setResizable(false);
34 | setModal(true);
35 | }
36 |
37 | private void initComponents() {
38 | add(formPanel, BorderLayout.CENTER);
39 | add(formBtnPanel, BorderLayout.SOUTH);
40 | }
41 |
42 | }
43 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/room/view/modal/RoomFormBtnPanel.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.room.view.modal;
2 |
3 | import com.danielmichalski.reservations.util.constant.ConstMessagesEN;
4 | import jakarta.annotation.PostConstruct;
5 | import lombok.Getter;
6 | import org.springframework.stereotype.Component;
7 |
8 | import javax.swing.JButton;
9 | import javax.swing.JPanel;
10 |
11 | @Component
12 | @Getter
13 | public class RoomFormBtnPanel extends JPanel {
14 |
15 | private JButton saveBtn;
16 | private JButton cancelBtn;
17 |
18 | @PostConstruct
19 | @SuppressWarnings("PMD.UnusedPrivateMethod")
20 | private void preparePanel() {
21 | initComponents();
22 | }
23 |
24 | private void initComponents() {
25 | saveBtn = new JButton(ConstMessagesEN.Labels.ADD_BTN);
26 | add(saveBtn);
27 |
28 | cancelBtn = new JButton(ConstMessagesEN.Labels.CANCEL_BTN);
29 | add(cancelBtn);
30 | }
31 |
32 | }
33 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/roomstatus/model/RoomStatusTableModel.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.roomstatus.model;
2 |
3 | import com.danielmichalski.reservations.domain.room.entity.RoomStatusEntity;
4 | import com.danielmichalski.reservations.ui.shared.model.DefaultTableModel;
5 | import com.danielmichalski.reservations.util.constant.ConstMessagesEN;
6 | import org.apache.logging.log4j.util.Strings;
7 | import org.springframework.stereotype.Component;
8 |
9 | @Component
10 | public class RoomStatusTableModel extends DefaultTableModel {
11 |
12 | private static final int ROOM_STATUS_INDEX = 0;
13 | private static final int ROOM_STATUS_DESCRIPTION_INDEX = 1;
14 |
15 | @Override
16 | public Object getValueAt(int rowIndex, int columnIndex) {
17 | RoomStatusEntity roomStatus = entities.get(rowIndex);
18 | switch (columnIndex) {
19 | case ROOM_STATUS_INDEX:
20 | return roomStatus.getStatus();
21 | case ROOM_STATUS_DESCRIPTION_INDEX:
22 | return roomStatus.getStatusDescription();
23 | default:
24 | return Strings.EMPTY;
25 | }
26 | }
27 |
28 | @Override
29 | public String[] getColumnLabels() {
30 | return new String[]{
31 | ConstMessagesEN.Labels.ROOM_STATUS,
32 | ConstMessagesEN.Labels.ROOM_STATUS_DESCRIPTION};
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/roomstatus/view/RoomStatusTableBtnPanel.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.roomstatus.view;
2 |
3 | import com.danielmichalski.reservations.util.constant.ConstMessagesEN;
4 | import jakarta.annotation.PostConstruct;
5 | import lombok.Getter;
6 | import org.springframework.stereotype.Component;
7 |
8 | import javax.swing.JButton;
9 | import javax.swing.JPanel;
10 |
11 | @Component
12 | @Getter
13 | public class RoomStatusTableBtnPanel extends JPanel {
14 |
15 | private JButton addBtn;
16 | private JButton removeBtn;
17 |
18 | @PostConstruct
19 | @SuppressWarnings("PMD.UnusedPrivateMethod")
20 | private void preparePanel() {
21 | initComponents();
22 | }
23 |
24 | private void initComponents() {
25 | addBtn = new JButton(ConstMessagesEN.Labels.ADD_BTN);
26 | add(addBtn);
27 |
28 | removeBtn = new JButton(ConstMessagesEN.Labels.REMOVE_BTN);
29 | add(removeBtn);
30 | }
31 |
32 | }
33 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/roomstatus/view/RoomStatusTableFrame.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.roomstatus.view;
2 |
3 | import com.danielmichalski.reservations.util.constant.ConstMessagesEN;
4 | import jakarta.annotation.PostConstruct;
5 | import lombok.AllArgsConstructor;
6 | import lombok.Getter;
7 | import org.springframework.stereotype.Component;
8 |
9 | import javax.swing.JFrame;
10 | import javax.swing.WindowConstants;
11 | import java.awt.BorderLayout;
12 |
13 | @Component
14 | @AllArgsConstructor
15 | @Getter
16 | public class RoomStatusTableFrame extends JFrame {
17 |
18 | private static final int DEFAULT_WIDTH = 500;
19 | private static final int DEFAULT_HEIGHT = 300;
20 |
21 | private final RoomStatusTablePanel tablePanel;
22 | private final RoomStatusTableBtnPanel tableBtnPanel;
23 |
24 | @PostConstruct
25 | @SuppressWarnings("PMD.UnusedPrivateMethod")
26 | private void prepareFrame() {
27 | setFrameUp();
28 | initComponents();
29 | }
30 |
31 | private void setFrameUp() {
32 | setTitle(ConstMessagesEN.Labels.ROOM_STATUSES);
33 | setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
34 | setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
35 | setLocationRelativeTo(null);
36 | setResizable(false);
37 | }
38 |
39 | private void initComponents() {
40 | add(tablePanel, BorderLayout.CENTER);
41 | add(tableBtnPanel, BorderLayout.SOUTH);
42 | }
43 |
44 | }
45 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/roomstatus/view/RoomStatusTablePanel.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.roomstatus.view;
2 |
3 | import com.danielmichalski.reservations.ui.forms.roomstatus.model.RoomStatusTableModel;
4 | import jakarta.annotation.PostConstruct;
5 | import lombok.Getter;
6 | import org.springframework.stereotype.Component;
7 |
8 | import javax.swing.JPanel;
9 | import javax.swing.JScrollPane;
10 | import javax.swing.JTable;
11 | import javax.swing.ListSelectionModel;
12 | import java.awt.BorderLayout;
13 |
14 | @Component
15 | @Getter
16 | public class RoomStatusTablePanel extends JPanel {
17 |
18 | private final RoomStatusTableModel tableModel;
19 |
20 | private JTable table;
21 |
22 | RoomStatusTablePanel(RoomStatusTableModel tableModel) {
23 | this.tableModel = tableModel;
24 | }
25 |
26 | @PostConstruct
27 | @SuppressWarnings("PMD.UnusedPrivateMethod")
28 | private void preparePanel() {
29 | setPanelUp();
30 | initComponents();
31 | }
32 |
33 | private void setPanelUp() {
34 | setLayout(new BorderLayout());
35 | }
36 |
37 | private void initComponents() {
38 | table = new JTable(tableModel);
39 | table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
40 |
41 | JScrollPane paneWithTable = new JScrollPane(table);
42 | add(paneWithTable, BorderLayout.CENTER);
43 | }
44 |
45 | }
46 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/roomstatus/view/modal/AddRoomStatusFrame.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.roomstatus.view.modal;
2 |
3 | import com.danielmichalski.reservations.util.constant.ConstMessagesEN;
4 | import jakarta.annotation.PostConstruct;
5 | import lombok.AllArgsConstructor;
6 | import lombok.Getter;
7 | import org.springframework.stereotype.Component;
8 |
9 | import javax.swing.JDialog;
10 | import javax.swing.WindowConstants;
11 | import java.awt.BorderLayout;
12 |
13 | @Component
14 | @AllArgsConstructor
15 | @Getter
16 | public class AddRoomStatusFrame extends JDialog {
17 |
18 | private final RoomStatusFormPanel formPanel;
19 | private final RoomStatusFormBtnPanel formBtnPanel;
20 |
21 | @PostConstruct
22 | @SuppressWarnings("PMD.UnusedPrivateMethod")
23 | private void prepareFrame() {
24 | setFrameUp();
25 | initComponents();
26 | pack();
27 | }
28 |
29 | private void setFrameUp() {
30 | setTitle(ConstMessagesEN.DialogTitles.ROOM_STATUS_MODAL);
31 | setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
32 | setLocationRelativeTo(null);
33 | setResizable(false);
34 | setModal(true);
35 | }
36 |
37 | private void initComponents() {
38 | add(formPanel, BorderLayout.CENTER);
39 | add(formBtnPanel, BorderLayout.SOUTH);
40 | }
41 |
42 | }
43 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/roomstatus/view/modal/RoomStatusFormBtnPanel.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.roomstatus.view.modal;
2 |
3 | import com.danielmichalski.reservations.util.constant.ConstMessagesEN;
4 | import jakarta.annotation.PostConstruct;
5 | import lombok.Getter;
6 | import org.springframework.stereotype.Component;
7 |
8 | import javax.swing.JButton;
9 | import javax.swing.JPanel;
10 |
11 | @Component
12 | @Getter
13 | public class RoomStatusFormBtnPanel extends JPanel {
14 |
15 | private JButton saveBtn;
16 | private JButton cancelBtn;
17 |
18 | @PostConstruct
19 | @SuppressWarnings("PMD.UnusedPrivateMethod")
20 | private void preparePanel() {
21 | initComponents();
22 | }
23 |
24 | private void initComponents() {
25 | saveBtn = new JButton(ConstMessagesEN.Labels.ADD_BTN);
26 | add(saveBtn);
27 |
28 | cancelBtn = new JButton(ConstMessagesEN.Labels.CANCEL_BTN);
29 | add(cancelBtn);
30 | }
31 |
32 | }
33 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/roomstatus/view/modal/RoomStatusFormPanel.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.roomstatus.view.modal;
2 |
3 | import com.danielmichalski.reservations.domain.room.entity.RoomStatusEntity;
4 | import com.danielmichalski.reservations.util.border.Borders;
5 | import com.danielmichalski.reservations.util.constant.ConstMessagesEN;
6 | import jakarta.annotation.PostConstruct;
7 | import org.apache.logging.log4j.util.Strings;
8 | import org.springframework.stereotype.Component;
9 |
10 | import javax.swing.JLabel;
11 | import javax.swing.JPanel;
12 | import javax.swing.JTextField;
13 | import java.awt.GridLayout;
14 |
15 | @Component
16 | public class RoomStatusFormPanel extends JPanel {
17 |
18 | private static final int LAYOUT_ROWS = 2;
19 | private static final int LAYOUT_COLS = 2;
20 | private static final int HORIZONTAL_GAP = 0;
21 | private static final int VERTICAL_GAP = 20;
22 | private static final int TEXT_FIELD_COLUMNS = 20;
23 |
24 | private JTextField roomStatusTF;
25 | private JTextField roomStatusDescriptionTF;
26 |
27 | @PostConstruct
28 | @SuppressWarnings("PMD.UnusedPrivateMethod")
29 | private void preparePanel() {
30 | setPanelUp();
31 | initComponents();
32 | }
33 |
34 | private void setPanelUp() {
35 | setBorder(Borders.createEmptyBorder());
36 | setLayout(new GridLayout(LAYOUT_ROWS, LAYOUT_COLS, HORIZONTAL_GAP, VERTICAL_GAP));
37 | }
38 |
39 | private void initComponents() {
40 | final JLabel roomStatusLbl = new JLabel(ConstMessagesEN.Labels.ROOM_STATUS);
41 | final JLabel roomStatusDescriptionLbl = new JLabel(ConstMessagesEN.Labels.ROOM_STATUS_DESCRIPTION);
42 |
43 | roomStatusTF = new JTextField(TEXT_FIELD_COLUMNS);
44 | roomStatusDescriptionTF = new JTextField(TEXT_FIELD_COLUMNS);
45 |
46 | add(roomStatusLbl);
47 | add(roomStatusTF);
48 | add(roomStatusDescriptionLbl);
49 | add(roomStatusDescriptionTF);
50 | }
51 |
52 | public RoomStatusEntity getEntityFromForm() {
53 | return new RoomStatusEntity(
54 | roomStatusTF.getText(),
55 | roomStatusDescriptionTF.getText()
56 | );
57 | }
58 |
59 | public void clearForm() {
60 | roomStatusTF.setText(Strings.EMPTY);
61 | roomStatusDescriptionTF.setText(Strings.EMPTY);
62 | }
63 |
64 | }
65 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/roomtype/model/RoomTypeTableModel.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.roomtype.model;
2 |
3 | import com.danielmichalski.reservations.domain.room.entity.RoomTypeEntity;
4 | import com.danielmichalski.reservations.ui.shared.model.DefaultTableModel;
5 | import com.danielmichalski.reservations.util.constant.ConstMessagesEN;
6 | import org.apache.logging.log4j.util.Strings;
7 | import org.springframework.stereotype.Component;
8 |
9 | @Component
10 | public class RoomTypeTableModel extends DefaultTableModel {
11 |
12 | private static final int ROOM_TYPE_INDEX = 0;
13 | private static final int ROOM_MULTIPLIER_INDEX = 1;
14 |
15 | @Override
16 | public Object getValueAt(int rowIndex, int columnIndex) {
17 | RoomTypeEntity roomType = entities.get(rowIndex);
18 | switch (columnIndex) {
19 | case ROOM_TYPE_INDEX:
20 | return roomType.getDescription();
21 | case ROOM_MULTIPLIER_INDEX:
22 | return roomType.getMultiplier();
23 | default:
24 | return Strings.EMPTY;
25 | }
26 | }
27 |
28 | @Override
29 | public String[] getColumnLabels() {
30 | return new String[]{
31 | ConstMessagesEN.Labels.ROOM_TYPE,
32 | ConstMessagesEN.Labels.ROOM_MULTIPLIER};
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/roomtype/view/RoomTypeTableBtnPanel.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.roomtype.view;
2 |
3 | import com.danielmichalski.reservations.util.constant.ConstMessagesEN;
4 | import jakarta.annotation.PostConstruct;
5 | import lombok.Getter;
6 | import org.springframework.stereotype.Component;
7 |
8 | import javax.swing.JButton;
9 | import javax.swing.JPanel;
10 |
11 | @Component
12 | @Getter
13 | public class RoomTypeTableBtnPanel extends JPanel {
14 |
15 | private JButton addBtn;
16 | private JButton removeBtn;
17 |
18 | @PostConstruct
19 | @SuppressWarnings("PMD.UnusedPrivateMethod")
20 | private void preparePanel() {
21 | initComponents();
22 | }
23 |
24 | private void initComponents() {
25 | addBtn = new JButton(ConstMessagesEN.Labels.ADD_BTN);
26 | add(addBtn);
27 |
28 | removeBtn = new JButton(ConstMessagesEN.Labels.REMOVE_BTN);
29 | add(removeBtn);
30 | }
31 |
32 | }
33 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/roomtype/view/RoomTypeTableFrame.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.roomtype.view;
2 |
3 | import com.danielmichalski.reservations.util.constant.ConstMessagesEN;
4 | import jakarta.annotation.PostConstruct;
5 | import lombok.AllArgsConstructor;
6 | import lombok.Getter;
7 | import org.springframework.stereotype.Component;
8 |
9 | import javax.swing.JFrame;
10 | import javax.swing.WindowConstants;
11 | import java.awt.BorderLayout;
12 |
13 | @Component
14 | @AllArgsConstructor
15 | @Getter
16 | public class RoomTypeTableFrame extends JFrame {
17 |
18 | private static final int DEFAULT_WIDTH = 500;
19 | private static final int DEFAULT_HEIGHT = 300;
20 |
21 | private final RoomTypeTablePanel tablePanel;
22 | private final RoomTypeTableBtnPanel tableBtnPanel;
23 |
24 | @PostConstruct
25 | @SuppressWarnings("PMD.UnusedPrivateMethod")
26 | private void prepareFrame() {
27 | setFrameUp();
28 | initComponents();
29 | }
30 |
31 | private void setFrameUp() {
32 | setTitle(ConstMessagesEN.Labels.ROOM_TYPES);
33 | setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
34 | setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
35 | setLocationRelativeTo(null);
36 | setResizable(false);
37 | }
38 |
39 | private void initComponents() {
40 | add(tablePanel, BorderLayout.CENTER);
41 | add(tableBtnPanel, BorderLayout.SOUTH);
42 | }
43 |
44 | }
45 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/roomtype/view/RoomTypeTablePanel.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.roomtype.view;
2 |
3 | import com.danielmichalski.reservations.ui.forms.roomtype.model.RoomTypeTableModel;
4 | import jakarta.annotation.PostConstruct;
5 | import lombok.Getter;
6 | import org.springframework.stereotype.Component;
7 |
8 | import javax.swing.JPanel;
9 | import javax.swing.JScrollPane;
10 | import javax.swing.JTable;
11 | import javax.swing.ListSelectionModel;
12 | import java.awt.BorderLayout;
13 |
14 | @Component
15 | @Getter
16 | public class RoomTypeTablePanel extends JPanel {
17 |
18 | private final RoomTypeTableModel tableModel;
19 |
20 | private JTable table;
21 |
22 | RoomTypeTablePanel(RoomTypeTableModel tableModel) {
23 | this.tableModel = tableModel;
24 | }
25 |
26 | @PostConstruct
27 | @SuppressWarnings("PMD.UnusedPrivateMethod")
28 | private void preparePanel() {
29 | setPanelUp();
30 | initComponents();
31 | }
32 |
33 | private void setPanelUp() {
34 | setLayout(new BorderLayout());
35 | }
36 |
37 | private void initComponents() {
38 | table = new JTable(tableModel);
39 | table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
40 |
41 | JScrollPane paneWithTable = new JScrollPane(table);
42 | add(paneWithTable, BorderLayout.CENTER);
43 | }
44 |
45 | }
46 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/roomtype/view/modal/AddRoomTypeFrame.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.roomtype.view.modal;
2 |
3 | import com.danielmichalski.reservations.util.constant.ConstMessagesEN;
4 | import jakarta.annotation.PostConstruct;
5 | import lombok.AllArgsConstructor;
6 | import lombok.Getter;
7 | import org.springframework.stereotype.Component;
8 |
9 | import javax.swing.JDialog;
10 | import javax.swing.WindowConstants;
11 | import java.awt.BorderLayout;
12 |
13 | @Component
14 | @AllArgsConstructor
15 | @Getter
16 | public class AddRoomTypeFrame extends JDialog {
17 |
18 | private final RoomTypeFormPanel formPanel;
19 | private final RoomTypeFormBtnPanel formBtnPanel;
20 |
21 | @PostConstruct
22 | @SuppressWarnings("PMD.UnusedPrivateMethod")
23 | private void prepareFrame() {
24 | setFrameUp();
25 | initComponents();
26 | pack();
27 | }
28 |
29 | private void setFrameUp() {
30 | setTitle(ConstMessagesEN.DialogTitles.ROOM_TYPE_MODAL);
31 | setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
32 | setLocationRelativeTo(null);
33 | setResizable(false);
34 | setModal(true);
35 | }
36 |
37 | private void initComponents() {
38 | add(formPanel, BorderLayout.CENTER);
39 | add(formBtnPanel, BorderLayout.SOUTH);
40 | }
41 |
42 | }
43 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/roomtype/view/modal/RoomTypeFormBtnPanel.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.roomtype.view.modal;
2 |
3 | import com.danielmichalski.reservations.util.constant.ConstMessagesEN;
4 | import jakarta.annotation.PostConstruct;
5 | import lombok.Getter;
6 | import org.springframework.stereotype.Component;
7 |
8 | import javax.swing.JButton;
9 | import javax.swing.JPanel;
10 |
11 | @Component
12 | @Getter
13 | public class RoomTypeFormBtnPanel extends JPanel {
14 |
15 | private JButton saveBtn;
16 | private JButton cancelBtn;
17 |
18 | @PostConstruct
19 | @SuppressWarnings("PMD.UnusedPrivateMethod")
20 | private void preparePanel() {
21 | initComponents();
22 | }
23 |
24 | private void initComponents() {
25 | saveBtn = new JButton(ConstMessagesEN.Labels.ADD_BTN);
26 | add(saveBtn);
27 |
28 | cancelBtn = new JButton(ConstMessagesEN.Labels.CANCEL_BTN);
29 | add(cancelBtn);
30 | }
31 |
32 | }
33 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/roomtype/view/modal/RoomTypeFormPanel.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.roomtype.view.modal;
2 |
3 | import com.danielmichalski.reservations.domain.room.entity.RoomTypeEntity;
4 | import com.danielmichalski.reservations.util.border.Borders;
5 | import com.danielmichalski.reservations.util.constant.ConstMessagesEN;
6 | import jakarta.annotation.PostConstruct;
7 | import org.apache.logging.log4j.util.Strings;
8 | import org.springframework.stereotype.Component;
9 |
10 | import javax.swing.JLabel;
11 | import javax.swing.JPanel;
12 | import javax.swing.JSpinner;
13 | import javax.swing.JTextField;
14 | import javax.swing.SpinnerNumberModel;
15 | import java.awt.GridLayout;
16 |
17 | @Component
18 | public class RoomTypeFormPanel extends JPanel {
19 |
20 | private static final int LAYOUT_ROWS = 2;
21 | private static final int LAYOUT_COLS = 2;
22 | private static final int HORIZONTAL_GAP = 0;
23 | private static final int VERTICAL_GAP = 20;
24 | private static final int TEXT_FIELD_COLUMNS = 20;
25 |
26 | private JTextField descriptionTF;
27 | private JSpinner multiplierJS;
28 |
29 | @PostConstruct
30 | @SuppressWarnings("PMD.UnusedPrivateMethod")
31 | private void preparePanel() {
32 | setPanelUp();
33 | initComponents();
34 | }
35 |
36 | private void setPanelUp() {
37 | setBorder(Borders.createEmptyBorder());
38 | setLayout(new GridLayout(LAYOUT_ROWS, LAYOUT_COLS, HORIZONTAL_GAP, VERTICAL_GAP));
39 | }
40 |
41 | private void initComponents() {
42 | final JLabel roomDescriptionLbl = new JLabel(ConstMessagesEN.Labels.ROOM_TYPE_DESCRIPTION);
43 | final JLabel roomMultiplierLbl = new JLabel(ConstMessagesEN.Labels.ROOM_MULTIPLIER);
44 |
45 | descriptionTF = new JTextField(TEXT_FIELD_COLUMNS);
46 | multiplierJS = new JSpinner(new SpinnerNumberModel(1, 1, 10, 1));
47 |
48 | add(roomDescriptionLbl);
49 | add(descriptionTF);
50 | add(roomMultiplierLbl);
51 | add(multiplierJS);
52 | }
53 |
54 | public RoomTypeEntity getEntityFromForm() {
55 | return new RoomTypeEntity(
56 | descriptionTF.getText(),
57 | (Integer) multiplierJS.getValue()
58 | );
59 | }
60 |
61 | public void clearForm() {
62 | descriptionTF.setText(Strings.EMPTY);
63 | }
64 |
65 | }
66 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/roomxreservation/model/ReservationsComboBoxModel.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.roomxreservation.model;
2 |
3 | import com.danielmichalski.reservations.domain.reservation.entity.ReservationEntity;
4 | import com.danielmichalski.reservations.ui.shared.model.DefaultAbstractComboBoxModel;
5 | import org.springframework.stereotype.Component;
6 |
7 | @Component
8 | public class ReservationsComboBoxModel extends DefaultAbstractComboBoxModel {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/roomxreservation/model/RoomXReservationTableModel.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.roomxreservation.model;
2 |
3 | import com.danielmichalski.reservations.domain.room.entity.RoomXReservationEntity;
4 | import com.danielmichalski.reservations.ui.shared.model.DefaultTableModel;
5 | import com.danielmichalski.reservations.util.constant.ConstMessagesEN;
6 | import org.apache.logging.log4j.util.Strings;
7 | import org.springframework.stereotype.Component;
8 |
9 | @Component
10 | public class RoomXReservationTableModel extends DefaultTableModel {
11 |
12 | private static final int ROOM_INDEX = 0;
13 | private static final int ROOM_TYPE_INDEX = 1;
14 | private static final int BASIC_RATE_INDEX = 2;
15 |
16 | @Override
17 | public Object getValueAt(int rowIndex, int columnIndex) {
18 | RoomXReservationEntity roomXReservation = entities.get(rowIndex);
19 | switch (columnIndex) {
20 | case ROOM_INDEX:
21 | return roomXReservation.getReservation();
22 | case ROOM_TYPE_INDEX:
23 | return roomXReservation.getRoom();
24 | case BASIC_RATE_INDEX:
25 | return roomXReservation.getRoomPrice();
26 | default:
27 | return Strings.EMPTY;
28 | }
29 | }
30 |
31 | @Override
32 | public String[] getColumnLabels() {
33 | return new String[]{
34 | ConstMessagesEN.Labels.ROOM,
35 | ConstMessagesEN.Labels.ROOM_TYPE,
36 | ConstMessagesEN.Labels.BASIC_RATE};
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/roomxreservation/view/RoomXReservationTableBtnPanel.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.roomxreservation.view;
2 |
3 | import com.danielmichalski.reservations.util.constant.ConstMessagesEN;
4 | import jakarta.annotation.PostConstruct;
5 | import lombok.Getter;
6 | import org.springframework.stereotype.Component;
7 |
8 | import javax.swing.JButton;
9 | import javax.swing.JPanel;
10 |
11 | @Component
12 | @Getter
13 | public class RoomXReservationTableBtnPanel extends JPanel {
14 |
15 | private JButton addBtn;
16 | private JButton removeBtn;
17 |
18 | @PostConstruct
19 | @SuppressWarnings("PMD.UnusedPrivateMethod")
20 | private void preparePanel() {
21 | initComponents();
22 | }
23 |
24 | private void initComponents() {
25 | addBtn = new JButton(ConstMessagesEN.Labels.ADD_BTN);
26 | add(addBtn);
27 |
28 | removeBtn = new JButton(ConstMessagesEN.Labels.REMOVE_BTN);
29 | add(removeBtn);
30 | }
31 |
32 | }
33 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/roomxreservation/view/RoomXReservationTableFrame.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.roomxreservation.view;
2 |
3 | import com.danielmichalski.reservations.util.constant.ConstMessagesEN;
4 | import jakarta.annotation.PostConstruct;
5 | import lombok.AllArgsConstructor;
6 | import lombok.Getter;
7 | import org.springframework.stereotype.Component;
8 |
9 | import javax.swing.JFrame;
10 | import javax.swing.WindowConstants;
11 | import java.awt.BorderLayout;
12 |
13 | @Component
14 | @AllArgsConstructor
15 | @Getter
16 | public class RoomXReservationTableFrame extends JFrame {
17 |
18 | private static final int DEFAULT_WIDTH = 500;
19 | private static final int DEFAULT_HEIGHT = 300;
20 |
21 | private final RoomXReservationTablePanel tablePanel;
22 | private final RoomXReservationTableBtnPanel tableBtnPanel;
23 |
24 | @PostConstruct
25 | @SuppressWarnings("PMD.UnusedPrivateMethod")
26 | private void prepareFrame() {
27 | setFrameUp();
28 | initComponents();
29 | }
30 |
31 | private void setFrameUp() {
32 | setTitle(ConstMessagesEN.Labels.ROOM_X_RESERVATIONS);
33 | setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
34 | setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
35 | setLocationRelativeTo(null);
36 | setResizable(false);
37 | }
38 |
39 | private void initComponents() {
40 | add(tablePanel, BorderLayout.CENTER);
41 | add(tableBtnPanel, BorderLayout.SOUTH);
42 | }
43 |
44 | }
45 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/roomxreservation/view/RoomXReservationTablePanel.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.roomxreservation.view;
2 |
3 | import com.danielmichalski.reservations.ui.forms.roomxreservation.model.RoomXReservationTableModel;
4 | import jakarta.annotation.PostConstruct;
5 | import lombok.Getter;
6 | import org.springframework.stereotype.Component;
7 |
8 | import javax.swing.JPanel;
9 | import javax.swing.JScrollPane;
10 | import javax.swing.JTable;
11 | import javax.swing.ListSelectionModel;
12 | import java.awt.BorderLayout;
13 |
14 | @Component
15 | @Getter
16 | public class RoomXReservationTablePanel extends JPanel {
17 |
18 | private final RoomXReservationTableModel tableModel;
19 |
20 | private JTable table;
21 |
22 | RoomXReservationTablePanel(RoomXReservationTableModel tableModel) {
23 | this.tableModel = tableModel;
24 | }
25 |
26 | @PostConstruct
27 | @SuppressWarnings("PMD.UnusedPrivateMethod")
28 | private void preparePanel() {
29 | setPanelUp();
30 | initComponents();
31 | }
32 |
33 | private void setPanelUp() {
34 | setLayout(new BorderLayout());
35 | }
36 |
37 | private void initComponents() {
38 | table = new JTable(tableModel);
39 | table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
40 |
41 | JScrollPane paneWithTable = new JScrollPane(table);
42 | add(paneWithTable, BorderLayout.CENTER);
43 | }
44 |
45 | }
46 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/roomxreservation/view/modal/AddRoomXReservationFame.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.roomxreservation.view.modal;
2 |
3 | import com.danielmichalski.reservations.util.constant.ConstMessagesEN;
4 | import jakarta.annotation.PostConstruct;
5 | import lombok.AllArgsConstructor;
6 | import lombok.Getter;
7 | import org.springframework.stereotype.Component;
8 |
9 | import javax.swing.JDialog;
10 | import javax.swing.WindowConstants;
11 | import java.awt.BorderLayout;
12 |
13 | @Component
14 | @AllArgsConstructor
15 | @Getter
16 | public class AddRoomXReservationFame extends JDialog {
17 |
18 | private final RoomXReservationFormPanel formPanel;
19 | private final RoomXReservationFormBtnPanel formBtnPanel;
20 |
21 | @PostConstruct
22 | @SuppressWarnings("PMD.UnusedPrivateMethod")
23 | private void prepareFrame() {
24 | setFrameUp();
25 | initComponents();
26 | pack();
27 | }
28 |
29 | private void setFrameUp() {
30 | setTitle(ConstMessagesEN.DialogTitles.ROOM_X_RESERVATION_MODAL);
31 | setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
32 | setLocationRelativeTo(null);
33 | setResizable(false);
34 | setModal(true);
35 | }
36 |
37 | private void initComponents() {
38 | add(formPanel, BorderLayout.CENTER);
39 | add(formBtnPanel, BorderLayout.SOUTH);
40 | }
41 |
42 | }
43 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/forms/roomxreservation/view/modal/RoomXReservationFormBtnPanel.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.forms.roomxreservation.view.modal;
2 |
3 | import com.danielmichalski.reservations.util.constant.ConstMessagesEN;
4 | import jakarta.annotation.PostConstruct;
5 | import lombok.Getter;
6 | import org.springframework.stereotype.Component;
7 |
8 | import javax.swing.JButton;
9 | import javax.swing.JPanel;
10 |
11 | @Component
12 | @Getter
13 | public class RoomXReservationFormBtnPanel extends JPanel {
14 |
15 | private JButton saveBtn;
16 | private JButton cancelBtn;
17 |
18 | @PostConstruct
19 | @SuppressWarnings("PMD.UnusedPrivateMethod")
20 | private void preparePanel() {
21 | initComponents();
22 | }
23 |
24 | private void initComponents() {
25 | saveBtn = new JButton(ConstMessagesEN.Labels.ADD_BTN);
26 | add(saveBtn);
27 |
28 | cancelBtn = new JButton(ConstMessagesEN.Labels.CANCEL_BTN);
29 | add(cancelBtn);
30 | }
31 |
32 | }
33 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/mainmenu/controller/MainMenuController.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.mainmenu.controller;
2 |
3 | import com.danielmichalski.reservations.ui.forms.forms.controller.FormsController;
4 | import com.danielmichalski.reservations.ui.mainmenu.view.MainMenuFrame;
5 | import com.danielmichalski.reservations.ui.reports.reports.controller.ReportsController;
6 | import com.danielmichalski.reservations.ui.shared.controller.AbstractFrameController;
7 | import lombok.AllArgsConstructor;
8 | import org.springframework.stereotype.Controller;
9 |
10 | @Controller
11 | @AllArgsConstructor
12 | public class MainMenuController extends AbstractFrameController {
13 |
14 | private final MainMenuFrame mainMenuFrame;
15 | private final FormsController formsController;
16 | private final ReportsController reportsController;
17 |
18 | @Override
19 | public void prepareAndOpenFrame() {
20 | registerAction(mainMenuFrame.getFormsBtn(), (e) -> openFormsWindow());
21 | registerAction(mainMenuFrame.getReportsBtn(), (e) -> openReportsWindow());
22 | mainMenuFrame.setVisible(true);
23 | }
24 |
25 | private void openFormsWindow() {
26 | formsController.prepareAndOpenFrame();
27 | }
28 |
29 | private void openReportsWindow() {
30 | reportsController.prepareAndOpenFrame();
31 | }
32 |
33 | }
34 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/mainmenu/view/MainMenuFrame.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.mainmenu.view;
2 |
3 | import com.danielmichalski.reservations.util.border.Borders;
4 | import com.danielmichalski.reservations.util.constant.ConstMessagesEN;
5 | import com.danielmichalski.reservations.util.ui.LookAndFeelUtils;
6 | import jakarta.annotation.PostConstruct;
7 | import lombok.Getter;
8 | import org.springframework.stereotype.Component;
9 |
10 | import javax.swing.JButton;
11 | import javax.swing.JFrame;
12 | import javax.swing.WindowConstants;
13 | import java.awt.GridLayout;
14 |
15 | @Component
16 | @Getter
17 | public class MainMenuFrame extends JFrame {
18 |
19 | private JButton formsBtn;
20 | private JButton reportsBtn;
21 |
22 | @PostConstruct
23 | @SuppressWarnings("PMD.UnusedPrivateMethod")
24 | private void prepareFrame() {
25 | setFrameUp();
26 | initComponents();
27 | pack();
28 | }
29 |
30 | private void setFrameUp() {
31 | getRootPane().setBorder(Borders.createEmptyBorder());
32 | setTitle(ConstMessagesEN.Labels.MAIN_MENU);
33 | setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
34 | setLocationRelativeTo(null);
35 | setResizable(false);
36 | LookAndFeelUtils.setWindowsLookAndFeel();
37 | setLayout(new GridLayout(1, 2, 20, 20));
38 | }
39 |
40 | private void initComponents() {
41 | formsBtn = new JButton(ConstMessagesEN.Labels.FORMS);
42 | reportsBtn = new JButton(ConstMessagesEN.Labels.REPORTS);
43 |
44 | add(formsBtn);
45 | add(reportsBtn);
46 | }
47 |
48 | }
49 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/reports/clientreservations/controller/ClientReservationsReportController.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.reports.clientreservations.controller;
2 |
3 | import com.danielmichalski.reservations.domain.client.dto.ClientReservationCountDto;
4 | import com.danielmichalski.reservations.domain.client.service.ClientService;
5 | import com.danielmichalski.reservations.ui.reports.clientreservations.model.ClientReservationsReportModel;
6 | import com.danielmichalski.reservations.ui.reports.clientreservations.view.ClientReservationsReportTableFrame;
7 | import com.danielmichalski.reservations.ui.shared.controller.AbstractFrameController;
8 | import lombok.AllArgsConstructor;
9 | import org.springframework.stereotype.Controller;
10 |
11 | import java.util.List;
12 |
13 | @Controller
14 | @AllArgsConstructor
15 | public class ClientReservationsReportController extends AbstractFrameController {
16 |
17 | private final ClientReservationsReportTableFrame tableFrame;
18 | private final ClientReservationsReportModel tableModel;
19 | private final ClientService clientService;
20 |
21 | @Override
22 | public void prepareAndOpenFrame() {
23 | loadEntities();
24 | showTableFrame();
25 | }
26 |
27 | private void loadEntities() {
28 | List entities = clientService.getClientReservationsCount();
29 | tableModel.clear();
30 | tableModel.addEntities(entities);
31 | }
32 |
33 | private void showTableFrame() {
34 | tableFrame.setVisible(true);
35 | }
36 |
37 | }
38 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/reports/clientreservations/model/ClientReservationsReportModel.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.reports.clientreservations.model;
2 |
3 | import com.danielmichalski.reservations.domain.client.dto.ClientReservationCountDto;
4 | import com.danielmichalski.reservations.ui.shared.model.DefaultTableModel;
5 | import com.danielmichalski.reservations.util.constant.ConstMessagesEN;
6 | import org.apache.logging.log4j.util.Strings;
7 | import org.springframework.stereotype.Component;
8 |
9 | @Component
10 | public class ClientReservationsReportModel extends DefaultTableModel {
11 |
12 | private static final int NAME_INDEX = 0;
13 | private static final int EMAIL_INDEX = 1;
14 | private static final int NUMBER_OF_RESERVATIONS_INDEX = 2;
15 |
16 | @Override
17 | public Object getValueAt(int rowIndex, int columnIndex) {
18 | ClientReservationCountDto clientReservationCountDto = entities.get(rowIndex);
19 |
20 | switch (columnIndex) {
21 | case NAME_INDEX:
22 | return clientReservationCountDto.name();
23 | case EMAIL_INDEX:
24 | return clientReservationCountDto.email();
25 | case NUMBER_OF_RESERVATIONS_INDEX:
26 | return clientReservationCountDto.count();
27 | default:
28 | return Strings.EMPTY;
29 | }
30 | }
31 |
32 | @Override
33 | public String[] getColumnLabels() {
34 | return new String[]{
35 | ConstMessagesEN.Labels.NAME,
36 | ConstMessagesEN.Labels.EMAIL,
37 | ConstMessagesEN.Labels.NUMBER_OF_RESERVATIONS
38 | };
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/reports/clientreservations/view/ClientReservationsReportTableFrame.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.reports.clientreservations.view;
2 |
3 | import com.danielmichalski.reservations.util.constant.ConstMessagesEN;
4 | import jakarta.annotation.PostConstruct;
5 | import lombok.AllArgsConstructor;
6 | import lombok.Getter;
7 | import org.springframework.stereotype.Component;
8 |
9 | import javax.swing.JFrame;
10 | import javax.swing.WindowConstants;
11 | import java.awt.BorderLayout;
12 |
13 | @Component
14 | @AllArgsConstructor
15 | @Getter
16 | public class ClientReservationsReportTableFrame extends JFrame {
17 |
18 | private static final int DEFAULT_WIDTH = 500;
19 | private static final int DEFAULT_HEIGHT = 300;
20 |
21 | private final ClientReservationsReportTablePanel tablePanel;
22 |
23 | @PostConstruct
24 | @SuppressWarnings("PMD.UnusedPrivateMethod")
25 | private void prepareFrame() {
26 | setFrameUp();
27 | initComponents();
28 | }
29 |
30 | private void setFrameUp() {
31 | setTitle(ConstMessagesEN.Labels.CLIENT_RESERVATIONS);
32 | setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
33 | setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
34 | setLocationRelativeTo(null);
35 | setResizable(false);
36 | }
37 |
38 | private void initComponents() {
39 | add(tablePanel, BorderLayout.CENTER);
40 | }
41 |
42 | }
43 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/reports/clientreservations/view/ClientReservationsReportTablePanel.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.reports.clientreservations.view;
2 |
3 | import com.danielmichalski.reservations.ui.reports.clientreservations.model.ClientReservationsReportModel;
4 | import jakarta.annotation.PostConstruct;
5 | import lombok.Getter;
6 | import org.springframework.stereotype.Component;
7 |
8 | import javax.swing.JPanel;
9 | import javax.swing.JScrollPane;
10 | import javax.swing.JTable;
11 | import javax.swing.ListSelectionModel;
12 | import java.awt.BorderLayout;
13 |
14 | @Component
15 | @Getter
16 | public class ClientReservationsReportTablePanel extends JPanel {
17 |
18 | private final ClientReservationsReportModel tableModel;
19 |
20 | private JTable table;
21 |
22 | ClientReservationsReportTablePanel(ClientReservationsReportModel tableModel) {
23 | this.tableModel = tableModel;
24 | }
25 |
26 | @PostConstruct
27 | @SuppressWarnings("PMD.UnusedPrivateMethod")
28 | private void preparePanel() {
29 | setPanelUp();
30 | initComponents();
31 | }
32 |
33 | private void setPanelUp() {
34 | setLayout(new BorderLayout());
35 | }
36 |
37 | private void initComponents() {
38 | table = new JTable(tableModel);
39 | table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
40 |
41 | JScrollPane paneWithTable = new JScrollPane(table);
42 | add(paneWithTable, BorderLayout.CENTER);
43 | }
44 |
45 | }
46 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/reports/payments/controller/PaymentReportController.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.reports.payments.controller;
2 |
3 | import com.danielmichalski.reservations.domain.payment.dto.PaymentMethodCountDto;
4 | import com.danielmichalski.reservations.domain.payment.service.PaymentMethodService;
5 | import com.danielmichalski.reservations.ui.reports.payments.model.PaymentReportModel;
6 | import com.danielmichalski.reservations.ui.reports.payments.view.PaymentReportTableFrame;
7 | import com.danielmichalski.reservations.ui.shared.controller.AbstractFrameController;
8 | import lombok.AllArgsConstructor;
9 | import org.springframework.stereotype.Controller;
10 |
11 | import java.util.List;
12 |
13 | @Controller
14 | @AllArgsConstructor
15 | public class PaymentReportController extends AbstractFrameController {
16 |
17 | private final PaymentReportTableFrame tableFrame;
18 | private final PaymentReportModel tableModel;
19 | private final PaymentMethodService paymentMethodService;
20 |
21 | @Override
22 | public void prepareAndOpenFrame() {
23 | loadEntities();
24 | showTableFrame();
25 | }
26 |
27 | private void loadEntities() {
28 | tableModel.clear();
29 | List paymentMethodCount = paymentMethodService.getPaymentMethodCount();
30 | tableModel.addEntities(paymentMethodCount);
31 | }
32 |
33 | private void showTableFrame() {
34 | tableFrame.setVisible(true);
35 | }
36 |
37 | }
38 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/reports/payments/model/PaymentReportModel.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.reports.payments.model;
2 |
3 | import com.danielmichalski.reservations.domain.payment.dto.PaymentMethodCountDto;
4 | import com.danielmichalski.reservations.ui.shared.model.DefaultTableModel;
5 | import com.danielmichalski.reservations.util.constant.ConstMessagesEN;
6 | import org.apache.logging.log4j.util.Strings;
7 | import org.springframework.stereotype.Component;
8 |
9 | @Component
10 | public class PaymentReportModel extends DefaultTableModel {
11 |
12 | private static final int PAYMENT_METHOD_INDEX = 0;
13 | private static final int PAYMENT_COUNT_INDEX = 1;
14 |
15 | @Override
16 | public Object getValueAt(int rowIndex, int columnIndex) {
17 | PaymentMethodCountDto paymentMethodCount = entities.get(rowIndex);
18 |
19 | switch (columnIndex) {
20 | case PAYMENT_METHOD_INDEX:
21 | return paymentMethodCount.name();
22 | case PAYMENT_COUNT_INDEX:
23 | return paymentMethodCount.count();
24 | default:
25 | return Strings.EMPTY;
26 | }
27 | }
28 |
29 | @Override
30 | public String[] getColumnLabels() {
31 | return new String[]{
32 | ConstMessagesEN.Labels.PAYMENT_METHOD,
33 | ConstMessagesEN.Labels.PAYMENT_COUNT
34 | };
35 | }
36 |
37 | }
38 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/reports/payments/view/PaymentReportTableFrame.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.reports.payments.view;
2 |
3 | import com.danielmichalski.reservations.util.constant.ConstMessagesEN;
4 | import jakarta.annotation.PostConstruct;
5 | import lombok.AllArgsConstructor;
6 | import lombok.Getter;
7 | import org.springframework.stereotype.Component;
8 |
9 | import javax.swing.JFrame;
10 | import javax.swing.WindowConstants;
11 | import java.awt.BorderLayout;
12 |
13 | @Component
14 | @AllArgsConstructor
15 | @Getter
16 | public class PaymentReportTableFrame extends JFrame {
17 |
18 | private static final int DEFAULT_WIDTH = 500;
19 | private static final int DEFAULT_HEIGHT = 300;
20 |
21 | private final PaymentReportTablePanel tablePanel;
22 |
23 | @PostConstruct
24 | @SuppressWarnings("PMD.UnusedPrivateMethod")
25 | private void prepareFrame() {
26 | setFrameUp();
27 | initComponents();
28 | }
29 |
30 | private void setFrameUp() {
31 | setTitle(ConstMessagesEN.Labels.PAYMENT_METHODS);
32 | setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
33 | setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
34 | setLocationRelativeTo(null);
35 | setResizable(false);
36 | }
37 |
38 | private void initComponents() {
39 | add(tablePanel, BorderLayout.CENTER);
40 | }
41 |
42 | }
43 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/reports/payments/view/PaymentReportTablePanel.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.reports.payments.view;
2 |
3 | import com.danielmichalski.reservations.ui.reports.payments.model.PaymentReportModel;
4 | import jakarta.annotation.PostConstruct;
5 | import lombok.Getter;
6 | import org.springframework.stereotype.Component;
7 |
8 | import javax.swing.JPanel;
9 | import javax.swing.JScrollPane;
10 | import javax.swing.JTable;
11 | import javax.swing.ListSelectionModel;
12 | import java.awt.BorderLayout;
13 |
14 | @Component
15 | @Getter
16 | public class PaymentReportTablePanel extends JPanel {
17 |
18 | private final PaymentReportModel tableModel;
19 |
20 | private JTable table;
21 |
22 | PaymentReportTablePanel(PaymentReportModel tableModel) {
23 | this.tableModel = tableModel;
24 | }
25 |
26 | @PostConstruct
27 | @SuppressWarnings("PMD.UnusedPrivateMethod")
28 | private void preparePanel() {
29 | setPanelUp();
30 | initComponents();
31 | }
32 |
33 | private void setPanelUp() {
34 | setLayout(new BorderLayout());
35 | }
36 |
37 | private void initComponents() {
38 | table = new JTable(tableModel);
39 | table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
40 |
41 | JScrollPane paneWithTable = new JScrollPane(table);
42 | add(paneWithTable, BorderLayout.CENTER);
43 | }
44 |
45 | }
46 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/reports/reports/controller/ReportsController.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.reports.reports.controller;
2 |
3 | import com.danielmichalski.reservations.ui.reports.clientreservations.controller.ClientReservationsReportController;
4 | import com.danielmichalski.reservations.ui.reports.payments.controller.PaymentReportController;
5 | import com.danielmichalski.reservations.ui.reports.reports.view.ReportsFrame;
6 | import com.danielmichalski.reservations.ui.reports.roomstatuses.controller.RoomStatusReportController;
7 | import com.danielmichalski.reservations.ui.shared.controller.AbstractFrameController;
8 | import lombok.AllArgsConstructor;
9 | import org.springframework.stereotype.Controller;
10 |
11 | @Controller
12 | @AllArgsConstructor
13 | public class ReportsController extends AbstractFrameController {
14 |
15 | private final ReportsFrame mainMenuFrame;
16 | private final PaymentReportController paymentReportController;
17 | private final RoomStatusReportController roomStatusReportController;
18 | private final ClientReservationsReportController clientReservationsReportController;
19 |
20 | @Override
21 | public void prepareAndOpenFrame() {
22 | registerAction(mainMenuFrame.getPaymentMethodReportBtn(), (e) -> openPaymentMethodReportWindow());
23 | registerAction(mainMenuFrame.getRoomStatusesReportBtn(), (e) -> openRoomStatusReportWindow());
24 | registerAction(mainMenuFrame.getClientReservationsReportBtn(), (e) -> openClientReservationReportWindow());
25 | mainMenuFrame.setVisible(true);
26 | }
27 |
28 | private void openPaymentMethodReportWindow() {
29 | paymentReportController.prepareAndOpenFrame();
30 | }
31 |
32 | private void openRoomStatusReportWindow() {
33 | roomStatusReportController.prepareAndOpenFrame();
34 | }
35 |
36 | private void openClientReservationReportWindow() {
37 | clientReservationsReportController.prepareAndOpenFrame();
38 | }
39 |
40 | }
41 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/reports/reports/view/ReportsFrame.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.reports.reports.view;
2 |
3 | import com.danielmichalski.reservations.util.border.Borders;
4 | import com.danielmichalski.reservations.util.constant.ConstMessagesEN;
5 | import com.danielmichalski.reservations.util.ui.LookAndFeelUtils;
6 | import jakarta.annotation.PostConstruct;
7 | import lombok.Getter;
8 | import org.springframework.stereotype.Component;
9 |
10 | import javax.swing.JButton;
11 | import javax.swing.JFrame;
12 | import javax.swing.WindowConstants;
13 | import java.awt.GridLayout;
14 |
15 | @Component
16 | @Getter
17 | public class ReportsFrame extends JFrame {
18 |
19 | private JButton paymentMethodReportBtn;
20 | private JButton roomStatusesReportBtn;
21 | private JButton clientReservationsReportBtn;
22 |
23 | @PostConstruct
24 | @SuppressWarnings("PMD.UnusedPrivateMethod")
25 | private void prepareFrame() {
26 | setFrameUp();
27 | initComponents();
28 | pack();
29 | }
30 |
31 | private void setFrameUp() {
32 | getRootPane().setBorder(Borders.createEmptyBorder());
33 | setTitle(ConstMessagesEN.Labels.REPORTS);
34 | setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
35 | setLocationRelativeTo(null);
36 | setResizable(false);
37 | LookAndFeelUtils.setWindowsLookAndFeel();
38 | setLayout(new GridLayout(3, 1, 20, 20));
39 | }
40 |
41 | private void initComponents() {
42 | paymentMethodReportBtn = new JButton(ConstMessagesEN.Labels.PAYMENT_METHODS);
43 | roomStatusesReportBtn = new JButton(ConstMessagesEN.Labels.ROOM_STATUSES);
44 | clientReservationsReportBtn = new JButton(ConstMessagesEN.Labels.CLIENT_RESERVATIONS);
45 |
46 | add(paymentMethodReportBtn);
47 | add(roomStatusesReportBtn);
48 | add(clientReservationsReportBtn);
49 | }
50 |
51 | }
52 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/reports/roomstatuses/controller/RoomStatusReportController.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.reports.roomstatuses.controller;
2 |
3 | import com.danielmichalski.reservations.domain.room.dto.RoomStatusesCountDto;
4 | import com.danielmichalski.reservations.domain.room.service.RoomStatusService;
5 | import com.danielmichalski.reservations.ui.reports.roomstatuses.model.RoomStatusReportModel;
6 | import com.danielmichalski.reservations.ui.reports.roomstatuses.view.RoomStatusReportTableFrame;
7 | import com.danielmichalski.reservations.ui.shared.controller.AbstractFrameController;
8 | import lombok.AllArgsConstructor;
9 | import org.springframework.stereotype.Controller;
10 |
11 | import java.util.List;
12 |
13 | @Controller
14 | @AllArgsConstructor
15 | public class RoomStatusReportController extends AbstractFrameController {
16 |
17 | private final RoomStatusReportTableFrame tableFrame;
18 | private final RoomStatusReportModel tableModel;
19 | private final RoomStatusService roomStatusService;
20 |
21 | @Override
22 | public void prepareAndOpenFrame() {
23 | loadEntities();
24 | showTableFrame();
25 | }
26 |
27 | private void loadEntities() {
28 | tableModel.clear();
29 | List entities = roomStatusService.getRoomStatusesCount();
30 | tableModel.addEntities(entities);
31 | }
32 |
33 | private void showTableFrame() {
34 | tableFrame.setVisible(true);
35 | }
36 |
37 | }
38 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/reports/roomstatuses/model/RoomStatusReportModel.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.reports.roomstatuses.model;
2 |
3 | import com.danielmichalski.reservations.domain.room.dto.RoomStatusesCountDto;
4 | import com.danielmichalski.reservations.ui.shared.model.DefaultTableModel;
5 | import com.danielmichalski.reservations.util.constant.ConstMessagesEN;
6 | import org.apache.logging.log4j.util.Strings;
7 | import org.springframework.stereotype.Component;
8 |
9 | @Component
10 | public class RoomStatusReportModel extends DefaultTableModel {
11 |
12 | private static final int ROOM_STATUS_INDEX = 0;
13 | private static final int NUMBER_OF_COUNT_INDEX = 1;
14 |
15 | @Override
16 | public String[] getColumnLabels() {
17 | return new String[]{
18 | ConstMessagesEN.Labels.ROOM_STATUS,
19 | ConstMessagesEN.Labels.NUMBER_OF_COUNT
20 | };
21 | }
22 |
23 | @Override
24 | public Object getValueAt(int rowIndex, int columnIndex) {
25 | RoomStatusesCountDto roomStatusesCount = entities.get(rowIndex);
26 |
27 | switch (columnIndex) {
28 | case ROOM_STATUS_INDEX:
29 | return roomStatusesCount.status();
30 | case NUMBER_OF_COUNT_INDEX:
31 | return roomStatusesCount.count();
32 | default:
33 | return Strings.EMPTY;
34 | }
35 | }
36 |
37 | }
38 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/reports/roomstatuses/view/RoomStatusReportTableFrame.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.reports.roomstatuses.view;
2 |
3 | import com.danielmichalski.reservations.util.constant.ConstMessagesEN;
4 | import jakarta.annotation.PostConstruct;
5 | import lombok.AllArgsConstructor;
6 | import lombok.Getter;
7 | import org.springframework.stereotype.Component;
8 |
9 | import javax.swing.JFrame;
10 | import javax.swing.WindowConstants;
11 | import java.awt.BorderLayout;
12 |
13 | @Component
14 | @AllArgsConstructor
15 | @Getter
16 | public class RoomStatusReportTableFrame extends JFrame {
17 |
18 | private static final int DEFAULT_WIDTH = 500;
19 | private static final int DEFAULT_HEIGHT = 300;
20 |
21 | private final RoomStatusReportTablePanel tablePanel;
22 |
23 | @PostConstruct
24 | @SuppressWarnings("PMD.UnusedPrivateMethod")
25 | private void prepareFrame() {
26 | setFrameUp();
27 | initComponents();
28 | }
29 |
30 | private void setFrameUp() {
31 | setTitle(ConstMessagesEN.Labels.ROOM_STATUSES);
32 | setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
33 | setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
34 | setLocationRelativeTo(null);
35 | setResizable(false);
36 | }
37 |
38 | private void initComponents() {
39 | add(tablePanel, BorderLayout.CENTER);
40 | }
41 |
42 | }
43 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/reports/roomstatuses/view/RoomStatusReportTablePanel.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.reports.roomstatuses.view;
2 |
3 | import com.danielmichalski.reservations.ui.reports.roomstatuses.model.RoomStatusReportModel;
4 | import jakarta.annotation.PostConstruct;
5 | import lombok.Getter;
6 | import org.springframework.stereotype.Component;
7 |
8 | import javax.swing.JPanel;
9 | import javax.swing.JScrollPane;
10 | import javax.swing.JTable;
11 | import javax.swing.ListSelectionModel;
12 | import java.awt.BorderLayout;
13 |
14 | @Component
15 | @Getter
16 | public class RoomStatusReportTablePanel extends JPanel {
17 |
18 | private final RoomStatusReportModel tableModel;
19 |
20 | private JTable table;
21 |
22 | RoomStatusReportTablePanel(RoomStatusReportModel tableModel) {
23 | this.tableModel = tableModel;
24 | }
25 |
26 | @PostConstruct
27 | @SuppressWarnings("PMD.UnusedPrivateMethod")
28 | private void preparePanel() {
29 | setPanelUp();
30 | initComponents();
31 | }
32 |
33 | private void setPanelUp() {
34 | setLayout(new BorderLayout());
35 | }
36 |
37 | private void initComponents() {
38 | table = new JTable(tableModel);
39 | table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
40 |
41 | JScrollPane paneWithTable = new JScrollPane(table);
42 | add(paneWithTable, BorderLayout.CENTER);
43 | }
44 |
45 | }
46 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/shared/controller/AbstractFrameController.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.shared.controller;
2 |
3 | import javax.swing.JButton;
4 | import java.awt.event.ActionListener;
5 |
6 | public abstract class AbstractFrameController {
7 |
8 | public abstract void prepareAndOpenFrame();
9 |
10 | protected void registerAction(JButton button, ActionListener listener) {
11 | button.addActionListener(listener);
12 | }
13 |
14 | }
15 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/shared/model/DefaultAbstractComboBoxModel.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.shared.model;
2 |
3 | import java.util.List;
4 |
5 | public abstract class DefaultAbstractComboBoxModel extends javax.swing.DefaultComboBoxModel {
6 |
7 | @Override
8 | public T getSelectedItem() {
9 | return (T) super.getSelectedItem();
10 | }
11 |
12 | public void addElements(List elements) {
13 | elements.forEach(this::addElement);
14 | }
15 |
16 | public void clear() {
17 | removeAllElements();
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/ui/shared/model/DefaultTableModel.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.ui.shared.model;
2 |
3 | import javax.swing.table.AbstractTableModel;
4 | import java.util.ArrayList;
5 | import java.util.List;
6 |
7 | public abstract class DefaultTableModel extends AbstractTableModel {
8 |
9 | protected final List entities = new ArrayList<>();
10 |
11 | public abstract String[] getColumnLabels();
12 |
13 | @Override
14 | public int getRowCount() {
15 | return entities.size();
16 | }
17 |
18 | @Override
19 | public int getColumnCount() {
20 | return getColumnLabels().length;
21 | }
22 |
23 | @Override
24 | public String getColumnName(int column) {
25 | return getColumnLabels()[column];
26 | }
27 |
28 | public void addEntity(T entity) {
29 | entities.add(entity);
30 | fireTableDataChanged();
31 | }
32 |
33 | public void addEntities(List entities) {
34 | this.entities.addAll(entities);
35 | fireTableDataChanged();
36 | }
37 |
38 | public T getEntityByRow(int rowIndex) {
39 | return entities.get(rowIndex);
40 | }
41 |
42 | public void removeRow(int row) {
43 | entities.remove(row);
44 | fireTableDataChanged();
45 | }
46 |
47 | public void clear() {
48 | entities.clear();
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/util/annotation/TransactionalReadOnly.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.util.annotation;
2 |
3 | import org.springframework.transaction.annotation.Transactional;
4 |
5 | import java.lang.annotation.ElementType;
6 | import java.lang.annotation.Retention;
7 | import java.lang.annotation.RetentionPolicy;
8 | import java.lang.annotation.Target;
9 |
10 | @Transactional(readOnly = true)
11 | @Retention(RetentionPolicy.RUNTIME)
12 |
13 | @Target({ElementType.TYPE, ElementType.METHOD})
14 | public @interface TransactionalReadOnly {
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/util/annotation/TransactionalWrite.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.util.annotation;
2 |
3 | import org.springframework.transaction.annotation.Transactional;
4 |
5 | import java.lang.annotation.ElementType;
6 | import java.lang.annotation.Retention;
7 | import java.lang.annotation.RetentionPolicy;
8 | import java.lang.annotation.Target;
9 |
10 | @Transactional(rollbackFor = Exception.class)
11 | @Retention(RetentionPolicy.RUNTIME)
12 | @Target({ElementType.TYPE, ElementType.METHOD})
13 | public @interface TransactionalWrite {
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/util/border/Borders.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.util.border;
2 |
3 | import javax.swing.BorderFactory;
4 | import javax.swing.border.Border;
5 |
6 | public class Borders {
7 |
8 | private static final int WIDTH = 40;
9 | private static final int HEIGHT = 20;
10 |
11 | public static Border createEmptyBorder() {
12 | return BorderFactory.createEmptyBorder(HEIGHT, WIDTH, HEIGHT, WIDTH);
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/util/notification/Notifications.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.util.notification;
2 |
3 | import com.danielmichalski.reservations.util.constant.ConstMessagesEN;
4 |
5 | import javax.swing.JOptionPane;
6 |
7 | public class Notifications {
8 |
9 | public static void showFormValidationAlert(String message) {
10 | JOptionPane.showMessageDialog(
11 | null,
12 | message,
13 | ConstMessagesEN.Messages.INFORMATION_TITLE,
14 | JOptionPane.INFORMATION_MESSAGE
15 | );
16 | }
17 |
18 | public static void showDeleteRowErrorMessage() {
19 | JOptionPane.showMessageDialog(
20 | null,
21 | ConstMessagesEN.Messages.DELETE_ROW_ERROR,
22 | ConstMessagesEN.Messages.ALERT_TILE,
23 | JOptionPane.ERROR_MESSAGE
24 | );
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/src/main/java/com/danielmichalski/reservations/util/ui/LookAndFeelUtils.java:
--------------------------------------------------------------------------------
1 | package com.danielmichalski.reservations.util.ui;
2 |
3 | import com.danielmichalski.reservations.util.constant.ConstMessagesEN;
4 |
5 | import javax.swing.JOptionPane;
6 | import javax.swing.UIManager;
7 |
8 | public class LookAndFeelUtils {
9 |
10 | public static void setWindowsLookAndFeel() {
11 | try {
12 | UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
13 | } catch (Exception e) {
14 | JOptionPane.showMessageDialog(
15 | null,
16 | ConstMessagesEN.Messages.WINDOWS_STYLE_LOADING_ERROR_MESSAGE + e,
17 | ConstMessagesEN.Messages.ALERT_TILE,
18 | JOptionPane.ERROR_MESSAGE
19 | );
20 | }
21 | }
22 |
23 | }
24 |
--------------------------------------------------------------------------------
/src/main/resources/application.yml:
--------------------------------------------------------------------------------
1 | spring:
2 | datasource:
3 | driver-class-name: org.postgresql.Driver
4 | url: 'jdbc:postgresql://localhost:5555/reservations'
5 | username: 'reservations_user'
6 | password: 'reservations_psw'
7 | jpa:
8 | properties:
9 | hibernate:
10 | hbm2ddl.auto: validate
11 | format_sql: false
12 | liquibase:
13 | change-log: 'classpath:db/liquibase-changelog-master.xml'
14 | contexts: 'test-data'
15 |
--------------------------------------------------------------------------------
/src/main/resources/banner.txt:
--------------------------------------------------------------------------------
1 | _ _
2 | | | (_)
3 | _ __ ___ ___ ___ _ ____ ____ _| |_ _ ___ _ __ ___
4 | | '__/ _ / __|/ _ | '__\ \ / / _` | __| |/ _ \| '_ \/ __|
5 | | | | __\__ | __| | \ V | (_| | |_| | (_) | | | \__ \
6 | |_| \___|___/\___|_| \_/ \__,_|\__|_|\___/|_| |_|___/ Spring Boot ${spring-boot.version}
7 |
8 |
--------------------------------------------------------------------------------
/src/main/resources/db/data/test/csv/address.csv:
--------------------------------------------------------------------------------
1 | street;house_number;flat_number;city;postal_code
2 | Long;5;34;New York;44-300
3 | Long street;54;66;Paris;49-321
4 | 18 Street;31;43;Sydney;34-323
5 |
--------------------------------------------------------------------------------
/src/main/resources/db/data/test/csv/client.csv:
--------------------------------------------------------------------------------
1 | address_id;name;surname;pesel;phone_number;email
2 | (SELECT id FROM address WHERE street = 'Long');John;New;86012932465;500493003;janek21313@oc.eu
3 | (SELECT id FROM address WHERE street = 'Long street');Mark;Spencer;72053148211;504939203;kulek123121@oc.eu
4 | (SELECT id FROM address WHERE street = '18 Street');Jules;Black;46111267536;511493003;marta3421@oc.eu
5 | (SELECT id FROM address WHERE street = 'Long');Maria;White;87052056951;521493003;jannowosielski2344@oc.eu
6 | (SELECT id FROM address WHERE street = 'Long street');Paris;Mary;00211037385;503493003;martakorycka2349@oc.eu
7 |
--------------------------------------------------------------------------------
/src/main/resources/db/data/test/csv/payment.csv:
--------------------------------------------------------------------------------
1 | payment_method_id;value;date_of_payment
2 | (SELECT id FROM payment_method WHERE name = 'Debit card');100;NOW()
3 | (SELECT id FROM payment_method WHERE name = 'Credit card');220;NOW()
4 | (SELECT id FROM payment_method WHERE name = 'Cash');260;NOW()
5 | (SELECT id FROM payment_method WHERE name = 'Cash');150;NOW()
6 | (SELECT id FROM payment_method WHERE name = 'Credit card');240;NOW()
7 | (SELECT id FROM payment_method WHERE name = 'Credit card');130;NOW()
8 | (SELECT id FROM payment_method WHERE name = 'Cash');355;NOW()
9 | (SELECT id FROM payment_method WHERE name = 'Credit card');435;NOW()
10 | (SELECT id FROM payment_method WHERE name = 'Credit card');755;NOW()
11 | (SELECT id FROM payment_method WHERE name = 'Debit card');125;NOW()
12 |
--------------------------------------------------------------------------------
/src/main/resources/db/data/test/csv/payment_method.csv:
--------------------------------------------------------------------------------
1 | name
2 | Debit card
3 | Credit card
4 | Cash
5 |
--------------------------------------------------------------------------------
/src/main/resources/db/data/test/csv/rate.csv:
--------------------------------------------------------------------------------
1 | room_id;room_type_id;default_rate
2 | (SELECT id FROM room WHERE id = '1');(SELECT id FROM room_type WHERE description = 'Premium');200
3 | (SELECT id FROM room WHERE id = '2');(SELECT id FROM room_type WHERE description = 'Premium');200
4 | (SELECT id FROM room WHERE id = '3');(SELECT id FROM room_type WHERE description = 'Luxury');200
5 |
--------------------------------------------------------------------------------
/src/main/resources/db/data/test/csv/reservation_status.csv:
--------------------------------------------------------------------------------
1 | status
2 | New
3 | Finished
4 | Canceled
5 |
--------------------------------------------------------------------------------
/src/main/resources/db/data/test/csv/room.csv:
--------------------------------------------------------------------------------
1 | room_status_id;number_of_people;description
2 | (SELECT id FROM room_status WHERE status = 'Not empty');3;A triple room
3 | (SELECT id FROM room_status WHERE status = 'Reserved');4;Four-person room
4 | (SELECT id FROM room_status WHERE status = 'Empty');4;Four-person room
5 | (SELECT id FROM room_status WHERE status = 'Reserved');5;Five-person room
6 | (SELECT id FROM room_status WHERE status = 'Empty');2;Double room
7 | (SELECT id FROM room_status WHERE status = 'Reserved');2;Double room
8 | (SELECT id FROM room_status WHERE status = 'Not empty');3;A triple room
9 | (SELECT id FROM room_status WHERE status = 'Empty');4;Four-person room
10 | (SELECT id FROM room_status WHERE status = 'Not empty');5;Five-person room
11 | (SELECT id FROM room_status WHERE status = 'Empty');5;Five-person room
12 |
--------------------------------------------------------------------------------
/src/main/resources/db/data/test/csv/room_status.csv:
--------------------------------------------------------------------------------
1 | status;status_description
2 | Not empty;Room not empty
3 | Empty;Room empty
4 | Reserved;Room reserved
5 |
--------------------------------------------------------------------------------
/src/main/resources/db/data/test/csv/room_type.csv:
--------------------------------------------------------------------------------
1 | description;multiplier
2 | Basic;1
3 | Premium;2
4 | Luxury;3
5 |
--------------------------------------------------------------------------------
/src/main/resources/db/data/test/csv/room_x_reservation.csv:
--------------------------------------------------------------------------------
1 | reservation_id;room_id;room_price
2 | (SELECT id FROM reservation WHERE id = 1);(SELECT id FROM room WHERE id = 1);420
3 | (SELECT id FROM reservation WHERE id = 2);(SELECT id FROM room WHERE id = 2);120
4 | (SELECT id FROM reservation WHERE id = 3);(SELECT id FROM room WHERE id = 2);135
5 | (SELECT id FROM reservation WHERE id = 4);(SELECT id FROM room WHERE id = 1);200
6 | (SELECT id FROM reservation WHERE id = 5);(SELECT id FROM room WHERE id = 2);150
7 |
--------------------------------------------------------------------------------
/src/main/resources/db/liquibase-changelog-master.xml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/src/main/resources/db/views/liquibase-changelog-views.xml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 | Create basic information view
9 |
10 |
11 | SELECT c.name, c.surname, a.city
12 | FROM client c
13 | LEFT JOIN address a ON c.address_id = a.id
14 | ORDER BY c.name
15 |
16 |
17 |
18 |
19 | Create number of empty rooms view
20 |
21 |
22 | SELECT rs.status_description, COUNT(r_type.description)
23 | FROM room r
24 | LEFT JOIN rate rt ON rt.room_id = r.id
25 | LEFT JOIN room_type r_type ON rt.room_type_id = r_type.id
26 | LEFT JOIN room_status rs ON r.room_status_id = rs.id
27 | WHERE rs.id = 2
28 | GROUP BY (rs.status_description)
29 |
30 |
31 |
32 |
33 | Create client reservations view
34 |
35 |
36 | SELECT c.email, COUNT(r.id) "Number of reservations"
37 | FROM client c
38 | LEFT JOIN reservation r ON c.id = r.client_id
39 | GROUP BY c.email
40 | ORDER BY "Number of reservations" DESC
41 |
42 |
43 |
44 |
45 |
--------------------------------------------------------------------------------