Advertisement
Guest User

Untitled

a guest
Jun 21st, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.04 KB | None | 0 0
  1. package ru.fsep.abacus.models;
  2.  
  3. import lombok.*;
  4.  
  5. import javax.persistence.*;
  6. import java.util.List;
  7.  
  8. /**
  9. * 25.08.2017
  10. *
  11. * @author Marsel Sidikov (First Software Engineering Platform)
  12. * @version 1.0
  13. */
  14. @Entity
  15. @Getter
  16. @Setter
  17. @ToString
  18. @NoArgsConstructor
  19. @AllArgsConstructor
  20. @Builder()
  21. @SqlResultSetMappings({
  22. @SqlResultSetMapping(
  23. name = "classroomMapping",
  24. classes = @ConstructorResult(targetClass = Classroom.class,
  25. columns = {@ColumnResult(name = "id", type = Long.class),
  26. @ColumnResult(name = "class_title", type = String.class),
  27. @ColumnResult(name = "lessons_count", type = Integer.class)})),
  28. @SqlResultSetMapping(
  29. name = "classroomMappingWithCenterName",
  30. classes = @ConstructorResult(targetClass = Classroom.class,
  31. columns = {@ColumnResult(name = "id", type = Long.class),
  32. @ColumnResult(name = "class_title", type = String.class),
  33. @ColumnResult(name = "lessons_count", type = Integer.class),
  34. @ColumnResult(name = "center_name", type = String.class)})),}
  35. )
  36. @NamedNativeQueries({
  37. @NamedNativeQuery(name = "Classroom.findAllByPartnerCreatorId",
  38. query = "SELECT * FROM classroom\n" +
  39. "LEFT JOIN (SELECT lesson.classroom_id, COUNT(lesson.id) AS lessons_count\n" +
  40. " FROM lesson\n" +
  41. " JOIN (SELECT *\n" +
  42. " FROM course\n" +
  43. " WHERE CURRENT_TIMESTAMP BETWEEN start_date AND finish_date) AS alias\n" +
  44. " ON lesson.course_id = alias.id\n" +
  45. " GROUP BY lesson.classroom_id) AS lessons ON lessons.classroom_id = classroom.id\n" +
  46. " WHERE classroom.partner_creator_id = :param1", resultSetMapping = "classroomMapping"),
  47. @NamedNativeQuery(name = "Classroom.findAll",
  48. query = "SELECT *\n" +
  49. "FROM classroom\n" +
  50. " LEFT JOIN (SELECT\n" +
  51. " lesson.classroom_id,\n" +
  52. " COUNT(lesson.id) AS lessons_count\n" +
  53. " FROM lesson\n" +
  54. " JOIN (SELECT *\n" +
  55. " FROM course\n" +
  56. " WHERE CURRENT_TIMESTAMP BETWEEN start_date AND finish_date) AS alias\n" +
  57. " ON lesson.course_id = alias.id\n" +
  58. " GROUP BY lesson.classroom_id) AS lessons ON lessons.classroom_id = classroom.id\n" +
  59. " LEFT JOIN abacus_user ON classroom.partner_creator_id = abacus_user.id",
  60. resultSetMapping = "classroomMappingWithCenterName")
  61.  
  62. })
  63. public class Classroom {
  64.  
  65. public Classroom(Long id, String classTitle, Integer lessonsCount) {
  66. this.id = id;
  67. this.classTitle = classTitle;
  68. this.lessonsCount = lessonsCount;
  69. }
  70.  
  71. public Classroom(Long id, String classTitle, Integer lessonsCount, String centerName) {
  72. this.id = id;
  73. this.classTitle = classTitle;
  74. this.lessonsCount = lessonsCount;
  75. this.centerName = centerName;
  76. }
  77.  
  78. @Id
  79. @GeneratedValue(strategy = GenerationType.IDENTITY)
  80. private Long id;
  81.  
  82. private String classTitle;
  83.  
  84. @ManyToOne(fetch = FetchType.LAZY)
  85. @JoinColumn(name = "partner_creator_id")
  86. private User partnerCreator;
  87.  
  88. @OneToMany(mappedBy = "classroom")
  89. private List<Lesson> lessons;
  90.  
  91. @Transient
  92. private Integer lessonsCount;
  93.  
  94. @Transient
  95. private String centerName;
  96.  
  97. public boolean of(User partner) {
  98. return this.partnerCreator.equals(partner);
  99. }
  100. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement