View Javadoc

1   /**
2    * 
3    */
4   package de.tivsource.page.entity.picture;
5   
6   import java.util.Date;
7   import java.util.Map;
8   
9   import javax.persistence.Basic;
10  import javax.persistence.CascadeType;
11  import javax.persistence.Column;
12  import javax.persistence.Entity;
13  import javax.persistence.FetchType;
14  import javax.persistence.Id;
15  import javax.persistence.JoinColumn;
16  import javax.persistence.ManyToOne;
17  import javax.persistence.MapKey;
18  import javax.persistence.OneToMany;
19  import javax.persistence.Temporal;
20  
21  import org.hibernate.envers.Audited;
22  import org.hibernate.search.annotations.DocumentId;
23  import org.hibernate.search.annotations.Indexed;
24  
25  import de.tivsource.page.entity.enumeration.Language;
26  import de.tivsource.page.entity.gallery.Gallery;
27  import de.tivsource.page.enumeration.UrlType;
28  
29  /**
30   * 
31   * Name des Bildes<br/>
32   * 
33   * 
34   * @author Marc Michele
35   * 
36   */
37  @Audited
38  @Indexed
39  @Entity
40  public class Picture {
41  
42      /**
43       * UUID des Objektes der Klasse Picture, diese ID ist einmalig über alle
44       * Objekte hinweg und sollte der bevorzugte weg sein auf bestimmte Objekte
45       * zuzugreifen.
46       */
47      @Id
48      @DocumentId
49      @Column(name="uuid", unique=true, length=42)
50      private String uuid;
51  
52      /**
53       * Die Map mit dem Beschreibung des Objektes, die Angabe ist Lokalisiert.
54       */
55      @OneToMany(mappedBy = "picture", cascade = { CascadeType.ALL }, fetch = FetchType.EAGER)
56      @MapKey(name = "language")
57      private Map<Language, PictureDescription> descriptionMap;
58  
59      @OneToMany(mappedBy = "picture", cascade = { CascadeType.ALL }, fetch = FetchType.EAGER)
60      @MapKey(name = "urlType")
61      private Map<UrlType, PictureUrl> pictureUrls;
62  
63      @Basic
64      @org.hibernate.annotations.Type(type = "yes_no")
65      private Boolean visible;
66  
67      private Integer orderNumber;
68      
69      @ManyToOne(targetEntity = Gallery.class, fetch = FetchType.EAGER)
70      @JoinColumn(name = "gallery_uuid")
71      private Gallery gallery;
72  
73      @Temporal(javax.persistence.TemporalType.TIMESTAMP)
74      private Date created;
75  
76      @Temporal(javax.persistence.TemporalType.TIMESTAMP)
77      private Date modified;
78  
79      private String modifiedBy;
80  
81      private String modifiedAddress;
82  
83      public String getUuid() {
84  		return uuid;
85  	}
86  
87  	public void setUuid(String uuid) {
88  		this.uuid = uuid;
89  	}
90  
91  	public Map<Language, PictureDescription> getDescriptionMap() {
92  		return descriptionMap;
93  	}
94  
95  	public void setDescriptionMap(Map<Language, PictureDescription> descriptionMap) {
96  		this.descriptionMap = descriptionMap;
97  	}
98  
99  	public Map<UrlType, PictureUrl> getPictureUrls() {
100 		return pictureUrls;
101 	}
102 
103 	public void setPictureUrls(Map<UrlType, PictureUrl> pictureUrls) {
104 		this.pictureUrls = pictureUrls;
105 	}
106 
107 	public Boolean getVisible() {
108 		return visible;
109 	}
110 
111 	public void setVisible(Boolean visible) {
112 		this.visible = visible;
113 	}
114 
115 	public Integer getOrderNumber() {
116 		return orderNumber;
117 	}
118 
119 	public void setOrderNumber(Integer orderNumber) {
120 		this.orderNumber = orderNumber;
121 	}
122 
123 	public Gallery getGallery() {
124 		return gallery;
125 	}
126 
127 	public void setGallery(Gallery gallery) {
128 		this.gallery = gallery;
129 	}
130 
131 	public Date getCreated() {
132 		return created;
133 	}
134 
135 	public void setCreated(Date created) {
136 		this.created = created;
137 	}
138 
139 	public Date getModified() {
140 		return modified;
141 	}
142 
143 	public void setModified(Date modified) {
144 		this.modified = modified;
145 	}
146 
147 	public String getModifiedBy() {
148 		return modifiedBy;
149 	}
150 
151 	public void setModifiedBy(String modifiedBy) {
152 		this.modifiedBy = modifiedBy;
153 	}
154 
155 	public String getModifiedAddress() {
156 		return modifiedAddress;
157 	}
158 
159 	public void setModifiedAddress(String modifiedAddress) {
160 		this.modifiedAddress = modifiedAddress;
161 	}
162 
163 	/**
164      * Methode die den Namen des aktuellen Objektes zurück liefert, es muss dazu
165      * die gewünschte Sprache als String übergeben werden (e.g. de/en/fr(etc.).
166      * 
167      * @param language
168      *            - String der den 2 Buchstaben-Code der Sprache enthält.
169      * @return String - Der Name des aktuellen Objektes als String.
170      */
171     public String getName(String language) {
172         String result = descriptionMap.get(Language.DE).getName();
173         String tmpResult = descriptionMap.get(Language.DE).getName();
174         try {
175             tmpResult = descriptionMap.get(
176                     Language.valueOf(language.toUpperCase())).getName();
177         } catch (IllegalArgumentException e) {
178             return result;
179         } catch (NullPointerException e) {
180             return result;
181         }
182         return tmpResult;
183     }
184 
185 	public String getPictureUrl(String urlType) {
186         StringBuilder sb = new StringBuilder("/");
187         sb.append("pictures");
188         sb.append("/");
189         
190         if (urlType.equals("THUMBNAIL")) {
191             sb.append("THUMBNAIL/");
192             sb.append(pictureUrls.get(UrlType.THUMBNAIL).getUrl());
193             return sb.toString();
194         } else if (urlType.equals("NORMAL")) {
195             sb.append("NORMAL/");
196             sb.append(pictureUrls.get(UrlType.NORMAL).getUrl());
197             return sb.toString();
198         } else if (urlType.equals("LARGE")) {
199             sb.append("LARGE/");
200             sb.append(pictureUrls.get(UrlType.LARGE).getUrl());
201             return sb.toString();
202         } else {
203             sb.append("FULL/");
204             sb.append(pictureUrls.get(UrlType.FULL).getUrl());
205             return sb.toString();
206         }
207     }
208 
209     public String getDescription(String language) {
210         String result = descriptionMap.get(Language.DE).getDescription();
211         String tmpResult = descriptionMap.get(Language.DE).getDescription();
212         try {
213             tmpResult = descriptionMap.get(
214                     Language.valueOf(language.toUpperCase())).getDescription();
215         } catch (IllegalArgumentException e) {
216             return result;
217         } catch (NullPointerException e) {
218             return result;
219         }
220         return tmpResult;
221     }
222 
223     public String getKeywords(String language) {
224         String result = descriptionMap.get(Language.DE).getKeywords();
225         String tmpResult = descriptionMap.get(Language.DE).getKeywords();
226         try {
227             tmpResult = descriptionMap.get(
228                     Language.valueOf(language.toUpperCase())).getKeywords();
229         } catch (IllegalArgumentException e) {
230             return result;
231         } catch (NullPointerException e) {
232             return result;
233         }
234         return tmpResult;
235     }
236 
237 }// Ende class