restoring head
[mir.git] / source / org / codecoop / mir / core / model / Media.java
1 /*
2  * $Id: Media.java,v 1.1 2004/11/06 16:20:48 idfx Exp $
3  *
4  * Copyright (C) 2001, 2002, 2003, 2004 The Mir-coders group
5  *
6  * This file is part of Mir.
7  *
8  * Mir is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published by
10  * the Free Software Foundation; either version 2 of the License, or
11  * (at your option) any later version.
12  *
13  * Mir is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with Mir; if not, write to the Free Software
20  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
21  *
22  * In addition, as a special exception, The Mir-coders gives permission to link
23  * the code of this program with  any library licensed under the Apache Software License,
24  * The Sun (tm) Java Advanced Imaging library (JAI), The Sun JIMI library
25  * (or with modified versions of the above that use the same license as the above),
26  * and distribute linked combinations including the two.  You must obey the
27  * GNU General Public License in all respects for all of the code used other than
28  * the above mentioned libraries.  If you modify this file, you may extend this
29  * exception to your version of the file, but you are not obligated to do so.
30  * If you do not wish to do so, delete this exception statement from your version.
31  */
32 package org.codecoop.mir.core.model;
33
34 import java.io.Serializable;
35 import java.util.Date;
36 import java.util.HashMap;
37 import java.util.Map;
38
39 import org.apache.commons.lang.builder.ToStringBuilder;
40 import org.apache.commons.lang.builder.ToStringStyle;
41
42 /**
43  * Media
44  * 
45  * @author idefix
46  */
47 public class Media implements Serializable {
48
49   /** identifier field */
50   private Integer id;
51
52   /** nullable persistent field */
53   private String title;
54
55   /** nullable persistent field */
56   private String description;
57
58   /** nullable persistent field */
59   private String creator;
60
61   /** nullable persistent field */
62   private String creatorMainUrl;
63
64   /** nullable persistent field */
65   private String creatorEmail;
66
67   /** nullable persistent field */
68   private String creatorAddress;
69
70   /** nullable persistent field */
71   private String creatorPhone;
72
73   /** nullable persistent field */
74   private String internalComment;
75
76   /** persistent field */
77   private boolean produced;
78
79   /** persistent field */
80   private Date creationDate;
81
82   /** nullable persistent field */
83   private Date lastChange;
84
85   /** nullable persistent field */
86   private User publisher;
87   
88   private Map relatedMedias;
89
90   /** holds hashCode for hashCode() */
91   private transient int hashCode = Integer.MIN_VALUE;
92
93   /** default constructor */
94   public Media() {
95     creationDate = new Date();
96   }
97
98   public Integer getId() {
99     return this.id;
100   }
101
102   public void setId(Integer id) {
103     this.id = id;
104   }
105
106   public String getTitle() {
107     return this.title;
108   }
109
110   public void setTitle(String title) {
111     this.title = title;
112   }
113
114   public String getDescription() {
115     return this.description;
116   }
117
118   public void setDescription(String description) {
119     this.description = description;
120   }
121
122   public String getCreator() {
123     return this.creator;
124   }
125
126   public void setCreator(String creator) {
127     this.creator = creator;
128   }
129
130   public String getCreatorMainUrl() {
131     return this.creatorMainUrl;
132   }
133
134   public void setCreatorMainUrl(String creatorMainUrl) {
135     this.creatorMainUrl = creatorMainUrl;
136   }
137
138   public String getCreatorEmail() {
139     return this.creatorEmail;
140   }
141
142   public void setCreatorEmail(String creatorEmail) {
143     this.creatorEmail = creatorEmail;
144   }
145
146   public String getCreatorAddress() {
147     return this.creatorAddress;
148   }
149
150   public void setCreatorAddress(String creatorAddress) {
151     this.creatorAddress = creatorAddress;
152   }
153
154   public String getCreatorPhone() {
155     return this.creatorPhone;
156   }
157
158   public void setCreatorPhone(String creatorPhone) {
159     this.creatorPhone = creatorPhone;
160   }
161
162   public String getInternalComment() {
163     return this.internalComment;
164   }
165
166   public void setInternalComment(String internalComment) {
167     this.internalComment = internalComment;
168   }
169
170   public boolean isProduced() {
171     return this.produced;
172   }
173
174   public void setProduced(boolean produced) {
175     this.produced = produced;
176   }
177
178   public Date getCreationDate() {
179     return this.creationDate;
180   }
181
182   public void setCreationDate(Date creationDate) {
183     this.creationDate = creationDate;
184   }
185
186   public Date getLastChange() {
187     return this.lastChange;
188   }
189
190   public void setLastChange(Date lastChange) {
191     this.lastChange = lastChange;
192   }
193
194   public User getPublisher() {
195     return this.publisher;
196   }
197
198   public void setPublisher(User publisher) {
199     this.publisher = publisher;
200   }
201
202   /**
203    * @return Returns the relatedMedias.
204    */
205   public Map getRelatedMedias() {
206     return relatedMedias;
207   }
208   
209   /**
210    * @param relatedMedias The relatedMedias to set.
211    */
212   public void setRelatedMedias(Map relatedMedias) {
213     this.relatedMedias = relatedMedias;
214   }
215   
216   /**
217    * @param mediaRelation
218    */
219   public void addRelatedMedia(Media target, MediaRelationType relationType) {
220     if(relatedMedias == null){
221       relatedMedias = new HashMap();
222     }
223     relatedMedias.put(target, relationType);
224   }
225   
226   /**
227    * @see java.lang.Object#toString()
228    */
229   public String toString() {
230     return new ToStringBuilder(this, ToStringStyle.DEFAULT_STYLE)
231       .append("id", this.getId()).toString();
232   }
233
234   public boolean equals(Object obj) {
235     if (null == obj) {
236       return false;
237     }
238     if (!(obj instanceof Media)) {
239       return false;
240     } else {
241       Media mObj = (Media) obj;
242       if (null == this.getId() || null == mObj.getId()) {
243         return false;
244       } else {
245         return (this.getId().equals(mObj.getId()));
246       }
247     }
248   }
249
250   public int hashCode() {
251     if (Integer.MIN_VALUE == this.hashCode) {
252       if (null == this.getId())
253         return super.hashCode();
254       else {
255         String hashStr = this.getClass().getName() + ":"
256             + this.getId().hashCode();
257         this.hashCode = hashStr.hashCode();
258       }
259     }
260     return this.hashCode;
261   }
262 }