test 123
[mir.git] / source / org / codecoop / mir / core / model / Article.java
1 /*
2  * $Id: Article.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.text.SimpleDateFormat;
36 import java.util.Date;
37 import java.util.HashSet;
38 import java.util.Set;
39
40 import org.apache.commons.lang.builder.ToStringBuilder;
41 import org.apache.commons.lang.builder.ToStringStyle;
42
43 /**
44  * An Article object is used to save the main content objects. 
45  * It has references to Media objects and Comment objects. An Article can be in
46  * different Categories and has one ArticleType.
47  * 
48  * @author idefix
49  */
50 public class Article extends Media implements Serializable {
51
52   /** persistent field */
53   private String date;
54
55   /** nullable persistent field */
56   private String subtitle;
57
58   /** nullable persistent field */
59   private String edittitle;
60
61   /** nullable persistent field */
62   private String content;
63
64   /** persistent field */
65   private boolean html;
66
67   /** nullable persistent field */
68   private User lockingUser;
69
70   /** nullable persistent field */
71   private Language language;
72
73   /** nullable persistent field */
74   private ArticleStatus status;
75   
76   /** persistent field */
77   private Set typedCategories;
78
79   /** persistent field */
80   private Set medias; 
81
82   private int hashCode;
83
84   /** default constructor */
85   public Article() {
86     super();
87     SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
88     date = simpleDateFormat.format(new Date());
89   }
90
91   public String getDate() {
92     return this.date;
93   }
94
95   public void setDate(String date) {
96     this.date = date;
97   }
98
99   public String getSubtitle() {
100     return this.subtitle;
101   }
102
103   public void setSubtitle(String subtitle) {
104     this.subtitle = subtitle;
105   }
106
107   public String getEdittitle() {
108     return this.edittitle;
109   }
110
111   public void setEdittitle(String edittitle) {
112     this.edittitle = edittitle;
113   }
114
115   public String getContent() {
116     return this.content;
117   }
118
119   public void setContent(String content) {
120     this.content = content;
121   }
122
123   public boolean isHtml() {
124     return this.html;
125   }
126
127   public void setHtml(boolean html) {
128     this.html = html;
129   }
130
131   public User getLockingUser() {
132     return this.lockingUser;
133   }
134
135   public void setLockingUser(User lockingUser) {
136     this.lockingUser = lockingUser;
137   }
138
139   public Language getLanguage() {
140     return this.language;
141   }
142
143   public void setLanguage(Language language) {
144     this.language = language;
145   }
146
147   public ArticleStatus getStatus() {
148     return status;
149   }
150   
151   public void setStatus(ArticleStatus status) {
152     this.status = status;
153   }
154   
155   public Set getTypedCategories() {
156     return this.typedCategories;
157   }
158
159   public void setTypedCategories(Set topics) {
160     this.typedCategories = topics;
161   }
162   
163   public void addTypedCategory(TypedCategory typedCategory){
164     if(null == typedCategories){
165       typedCategories = new HashSet();
166     }
167     typedCategories.add(typedCategory);
168   }
169
170   public Set getMedias() {
171     return this.medias;
172   }
173
174   public void setMedias(Set medias) {
175     this.medias = medias;
176   }
177
178   public boolean equals(Object obj) {
179     if (null == obj) {
180       return false;
181     }
182     if (!(obj instanceof Article)) {
183       return false;
184     } else {
185       Article mObj = (Article) obj;
186       if (null == this.getId() || null == mObj.getId()) {
187         return false;
188       } else {
189         return (this.getId().equals(mObj.getId()));
190       }
191     }
192   }
193
194   public int hashCode() {
195     if (Integer.MIN_VALUE == this.hashCode) {
196       if (null == this.getId()){
197         return super.hashCode();
198       } else {
199         String hashStr = this.getClass().getName() + ":"
200             + this.getId().hashCode();
201         this.hashCode = hashStr.hashCode();
202       }
203     }
204     return this.hashCode;
205   }
206   
207   /**
208    * @see java.lang.Object#toString()
209    */
210   public String toString() {
211     return new ToStringBuilder(this, ToStringStyle.DEFAULT_STYLE)
212         .append("id", this.getId())
213         .toString();
214   }
215 }