From d1011d053750434c5a1f948e0903e580267069a7 Mon Sep 17 00:00:00 2001 From: dasha Date: Mon, 24 Apr 2023 16:22:14 +0400 Subject: [PATCH] =?UTF-8?q?=D1=82=D0=B0=D0=BA=20=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=D1=8C=D0=BD=D0=B5=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/student/controller/SessionDto.java | 18 +++++++++++--- .../labwork1/app/student/model/Session.java | 24 +++++-------------- .../app/student/model/SessionExtension.java | 17 +++++++++++++ .../student/repository/SessionRepository.java | 9 +++---- .../app/student/service/SessionService.java | 5 ++-- .../com/labwork1/app/JpaCustomerTests.java | 2 +- 6 files changed, 47 insertions(+), 28 deletions(-) create mode 100644 src/main/java/com/labwork1/app/student/model/SessionExtension.java diff --git a/src/main/java/com/labwork1/app/student/controller/SessionDto.java b/src/main/java/com/labwork1/app/student/controller/SessionDto.java index aa91f6a..3a12805 100644 --- a/src/main/java/com/labwork1/app/student/controller/SessionDto.java +++ b/src/main/java/com/labwork1/app/student/controller/SessionDto.java @@ -1,6 +1,7 @@ package com.labwork1.app.student.controller; import com.labwork1.app.student.model.Session; +import com.labwork1.app.student.model.SessionExtension; import java.sql.Timestamp; @@ -16,14 +17,25 @@ public class SessionDto { public SessionDto() { } - public SessionDto(Session session) { + public SessionDto(SessionExtension session) { this.id = session.getId(); this.price = session.getPrice(); this.timestamp = session.getTimestamp(); this.capacity = session.getCapacity(); this.maxCount = session.getMaxCount(); - if (session.getCinema() != null) this.cinema = new CinemaDto(session.getCinema()); - else this.cinema = null; + if (session.getCinema() != null) { + this.cinema = new CinemaDto(session.getCinema()); + } else this.cinema = null; + } + + public SessionDto(Session session) { + this.id = session.getId(); + this.price = session.getPrice(); + this.timestamp = session.getTimestamp(); + this.maxCount = session.getMaxCount(); + if (session.getCinema() != null) { + this.cinema = new CinemaDto(session.getCinema()); + } else this.cinema = null; } public int getMaxCount() { diff --git a/src/main/java/com/labwork1/app/student/model/Session.java b/src/main/java/com/labwork1/app/student/model/Session.java index b7986ed..0e2df8c 100644 --- a/src/main/java/com/labwork1/app/student/model/Session.java +++ b/src/main/java/com/labwork1/app/student/model/Session.java @@ -12,23 +12,21 @@ import java.util.Objects; public class Session { @Id @GeneratedValue(strategy = GenerationType.AUTO) - private Long id; + protected Long id; @NotNull(message = "price can't be null or empty") - private Double price; + protected Double price; @NotNull(message = "timestamp can't be null or empty") @Column @Temporal(TemporalType.TIMESTAMP) - private Timestamp timestamp; + protected Timestamp timestamp; @OneToMany(mappedBy = "session", fetch = FetchType.EAGER) private List orders; @ManyToOne(fetch = FetchType.EAGER) @JoinColumn(name = "cinema_fk") - private Cinema cinema; + protected Cinema cinema; @NotNull(message = "maxCount can't be null or empty") @Column - private Integer maxCount; - @Transient - private Long capacity; + protected Integer maxCount; public Session() { } @@ -43,14 +41,13 @@ public class Session { this.maxCount = maxCount; } - public Session(Session session, Long capacity) { + public Session(Session session) { this.id = session.getId(); this.price = session.getPrice(); this.timestamp = session.getTimestamp(); this.orders = session.getOrders(); this.cinema = session.getCinema(); this.maxCount = session.getMaxCount(); - this.capacity = capacity; } public Cinema getCinema() { @@ -95,7 +92,6 @@ public class Session { "id=" + id + ", price='" + price + '\'' + ", timestamp='" + timestamp.toString() + '\'' + - ", capacity='" + capacity + '\'' + ", maxCount='" + maxCount.toString() + '\'' + ", cinema='" + cinema.toString() + '\'' + '}'; @@ -136,12 +132,4 @@ public class Session { public List getOrders() { return orders; } - - public Long getCapacity() { - return capacity; - } - - public void setCapacity(Long capacity) { - this.capacity = capacity; - } } diff --git a/src/main/java/com/labwork1/app/student/model/SessionExtension.java b/src/main/java/com/labwork1/app/student/model/SessionExtension.java new file mode 100644 index 0000000..a582c07 --- /dev/null +++ b/src/main/java/com/labwork1/app/student/model/SessionExtension.java @@ -0,0 +1,17 @@ +package com.labwork1.app.student.model; + +public class SessionExtension extends Session { + private Long capacity; + public SessionExtension(Session session, Long capacity) { + super(session); + this.capacity = capacity; + } + + public Long getCapacity() { + return capacity; + } + + public void setCapacity(Long capacity) { + this.capacity = capacity; + } +} \ No newline at end of file diff --git a/src/main/java/com/labwork1/app/student/repository/SessionRepository.java b/src/main/java/com/labwork1/app/student/repository/SessionRepository.java index ba55e8f..7870db4 100644 --- a/src/main/java/com/labwork1/app/student/repository/SessionRepository.java +++ b/src/main/java/com/labwork1/app/student/repository/SessionRepository.java @@ -1,6 +1,7 @@ package com.labwork1.app.student.repository; import com.labwork1.app.student.model.Session; +import com.labwork1.app.student.model.SessionExtension; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; @@ -11,13 +12,13 @@ import java.util.Optional; public interface SessionRepository extends JpaRepository { @Query("Select sum(os.count) from OrderSession os where os.session.id = :sessionId") Optional getCapacity(@Param("sessionId") Long sessionId); - @Query("Select new com.labwork1.app.student.model.Session(s, sum(os.count)) from Session s " + + @Query("Select new com.labwork1.app.student.model.SessionExtension(s, sum(os.count)) from Session s " + "left join OrderSession os on s.id = os.session.id " + "group by s") - List getSessionsWithCapacity(); - @Query("Select new com.labwork1.app.student.model.Session(s, sum(os.count)) from Session s " + + List getSessionsWithCapacity(); + @Query("Select new com.labwork1.app.student.model.SessionExtension(s, sum(os.count)) from Session s " + "left join OrderSession os on s.id = os.session.id " + "where s.id = :sessionId " + "group by s") - Optional getSessionWithCapacity(@Param("sessionId") Long sessionId); + Optional getSessionWithCapacity(@Param("sessionId") Long sessionId); } diff --git a/src/main/java/com/labwork1/app/student/service/SessionService.java b/src/main/java/com/labwork1/app/student/service/SessionService.java index 30bffbe..a5e2778 100644 --- a/src/main/java/com/labwork1/app/student/service/SessionService.java +++ b/src/main/java/com/labwork1/app/student/service/SessionService.java @@ -2,6 +2,7 @@ package com.labwork1.app.student.service; import com.labwork1.app.student.model.Cinema; import com.labwork1.app.student.model.Session; +import com.labwork1.app.student.model.SessionExtension; import com.labwork1.app.student.repository.SessionRepository; import com.labwork1.app.util.validation.ValidatorUtil; import org.springframework.stereotype.Service; @@ -32,13 +33,13 @@ public class SessionService { } @Transactional(readOnly = true) - public Session findSession(Long id) { + public SessionExtension findSession(Long id) { return sessionRepository.getSessionWithCapacity(id) .orElseThrow(() -> new SessionNotFoundException(id)); } @Transactional(readOnly = true) - public List findAllSessions() { + public List findAllSessions() { return sessionRepository.getSessionsWithCapacity(); } diff --git a/src/test/java/com/labwork1/app/JpaCustomerTests.java b/src/test/java/com/labwork1/app/JpaCustomerTests.java index 15a127a..4a526f3 100644 --- a/src/test/java/com/labwork1/app/JpaCustomerTests.java +++ b/src/test/java/com/labwork1/app/JpaCustomerTests.java @@ -67,7 +67,7 @@ public class JpaCustomerTests { // у заказа 2 сеанса orderService.addSession(order2.getId(), session1.getId(), 2); - List result = sessionService.findAllSessions(); + List result = sessionService.findAllSessions(); Assertions.assertEquals(sessionService.getCapacity(session1.getId()), 2);