View Javadoc

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   * @author Marc Michele
23   *
24   */
25  @Audited
26  @Entity
27  public class OpeningHour implements Comparable<OpeningHour> {
28  
29      /**
30       * UUID des Objektes der Klasse OpeningHour, diese ID ist einmalig über alle
31       * Objekte hinweg und sollte der bevorzugte weg sein auf bestimmte Objekte
32       * zuzugreifen.
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 		// Wenn die beiden Datenbank-IDs gleich sind und nicht null !
103 		if(o.uuid != null && uuid != null && o.uuid == uuid) {
104 			return 0;
105 		}
106 		// Wenn der übergebene Wochtag vor dem des Objektes liegt.
107 		if(o.weekday.ordinal() < weekday.ordinal()) {
108 			return 1;
109 		}
110 		// Wenn der übergebene Wochtag nach dem des Objektes liegt.
111 		if(o.weekday.ordinal() > weekday.ordinal()) {
112 			return -1;
113 		}
114 		// Wenn die Öffnungzeiten vor den des Objektes liegen.
115 		if(open.compareTo(o.getOpen()) < 0) {
116 			return -1;
117 		}
118 		// Wenn die Öffnungzeiten nach den des Objektes liegen.
119 		if(open.compareTo(o.getOpen()) > 0) {
120 			return 1;
121 		}
122 		// Wenn die Schließzeiten vor den des Objektes liegen.
123 		if(close.compareTo(o.getClose()) < 0) {
124 			return -1;
125 		}
126 		// Wenn die Schließzeiten nach den des Objektes liegen.
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 		// Wenn die Objekte gleich sind.
136 		if(this == obj) {
137 			return true;
138 		}
139 		// Wenn das Objekt null ist.
140 		if(obj == null) {
141 			return false;
142 		}
143 		// Wenn es sich nicht um die gleich Klasse handelt.
144 		if (!(obj instanceof OpeningHour)) {
145 			return false;
146 		}
147 		// Objekt Casting
148 		OpeningHour other = (OpeningHour) obj;
149 		// Wenn die UUID Identisch ist dann ist das Objekt gleich.
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 }// End class