1 package de.tivsource.page.entity.location;
2
3 import javax.persistence.AttributeOverride;
4 import javax.persistence.AttributeOverrides;
5 import javax.persistence.Column;
6 import javax.persistence.Embedded;
7 import javax.persistence.Entity;
8 import javax.persistence.EnumType;
9 import javax.persistence.Enumerated;
10 import javax.persistence.FetchType;
11 import javax.persistence.Id;
12 import javax.persistence.JoinColumn;
13 import javax.persistence.ManyToOne;
14
15 import org.hibernate.envers.Audited;
16 import org.hibernate.search.annotations.DocumentId;
17
18 import de.tivsource.page.enumeration.Weekday;
19
20
21
22
23
24
25 @Audited
26 @Entity
27 public class OpeningHour implements Comparable<OpeningHour> {
28
29
30
31
32
33
34 @Id
35 @DocumentId
36 @Column(name="uuid", unique=true, length=42)
37 private String uuid;
38
39 @Enumerated(EnumType.STRING)
40 private Weekday weekday;
41
42 @Embedded
43 @AttributeOverrides({
44 @AttributeOverride(name="hour", column=@Column(name="open_hour")),
45 @AttributeOverride(name="minute", column=@Column(name="open_minute"))
46 })
47 private HourMinute open;
48
49 @Embedded
50 @AttributeOverrides({
51 @AttributeOverride(name="hour", column=@Column(name="close_hour")),
52 @AttributeOverride(name="minute", column=@Column(name="close_minute"))
53 })
54 private HourMinute close;
55
56 @ManyToOne(fetch = FetchType.LAZY)
57 @JoinColumn(name = "location_uuid")
58 private Location location;
59
60 public String getUuid() {
61 return uuid;
62 }
63
64 public void setUuid(String uuid) {
65 this.uuid = uuid;
66 }
67
68 public Weekday getWeekday() {
69 return weekday;
70 }
71
72 public void setWeekday(Weekday weekday) {
73 this.weekday = weekday;
74 }
75
76 public HourMinute getOpen() {
77 return open;
78 }
79
80 public void setOpen(HourMinute open) {
81 this.open = open;
82 }
83
84 public HourMinute getClose() {
85 return close;
86 }
87
88 public void setClose(HourMinute close) {
89 this.close = close;
90 }
91
92 public Location getLocation() {
93 return location;
94 }
95
96 public void setLocation(Location location) {
97 this.location = location;
98 }
99
100 @Override
101 public int compareTo(OpeningHour o) {
102
103 if(o.uuid != null && uuid != null && o.uuid == uuid) {
104 return 0;
105 }
106
107 if(o.weekday.ordinal() < weekday.ordinal()) {
108 return 1;
109 }
110
111 if(o.weekday.ordinal() > weekday.ordinal()) {
112 return -1;
113 }
114
115 if(open.compareTo(o.getOpen()) < 0) {
116 return -1;
117 }
118
119 if(open.compareTo(o.getOpen()) > 0) {
120 return 1;
121 }
122
123 if(close.compareTo(o.getClose()) < 0) {
124 return -1;
125 }
126
127 if(close.compareTo(o.getClose()) > 0) {
128 return 1;
129 }
130 return 0;
131 }
132
133 @Override
134 public boolean equals(Object obj) {
135
136 if(this == obj) {
137 return true;
138 }
139
140 if(obj == null) {
141 return false;
142 }
143
144 if (!(obj instanceof OpeningHour)) {
145 return false;
146 }
147
148 OpeningHour other = (OpeningHour) obj;
149
150 if (this.uuid.equals(other.uuid)){
151 return true;
152 }
153 return false;
154 }
155
156 @Override
157 public int hashCode() {
158 int hash = 1;
159 hash = hash * 7 * (weekday == null ? 0 : weekday.hashCode());
160 hash = hash * 7 * (open == null ? 0 : open.hashCode());
161 hash = hash * 7 * (close == null ? 0 : close.hashCode());
162 return hash;
163 }
164
165 }