2 * $Id: Article.java,v 1.1 2004/11/06 16:20:48 idfx Exp $
4 * Copyright (C) 2001, 2002, 2003, 2004 The Mir-coders group
6 * This file is part of Mir.
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.
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.
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
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.
32 package org.codecoop.mir.core.model;
34 import java.io.Serializable;
35 import java.text.SimpleDateFormat;
36 import java.util.Date;
37 import java.util.HashSet;
40 import org.apache.commons.lang.builder.ToStringBuilder;
41 import org.apache.commons.lang.builder.ToStringStyle;
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.
50 public class Article extends Media implements Serializable {
52 /** persistent field */
55 /** nullable persistent field */
56 private String subtitle;
58 /** nullable persistent field */
59 private String edittitle;
61 /** nullable persistent field */
62 private String content;
64 /** persistent field */
67 /** nullable persistent field */
68 private User lockingUser;
70 /** nullable persistent field */
71 private Language language;
73 /** nullable persistent field */
74 private ArticleStatus status;
76 /** persistent field */
77 private Set typedCategories;
79 /** persistent field */
84 /** default constructor */
87 SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
88 date = simpleDateFormat.format(new Date());
91 public String getDate() {
95 public void setDate(String date) {
99 public String getSubtitle() {
100 return this.subtitle;
103 public void setSubtitle(String subtitle) {
104 this.subtitle = subtitle;
107 public String getEdittitle() {
108 return this.edittitle;
111 public void setEdittitle(String edittitle) {
112 this.edittitle = edittitle;
115 public String getContent() {
119 public void setContent(String content) {
120 this.content = content;
123 public boolean isHtml() {
127 public void setHtml(boolean html) {
131 public User getLockingUser() {
132 return this.lockingUser;
135 public void setLockingUser(User lockingUser) {
136 this.lockingUser = lockingUser;
139 public Language getLanguage() {
140 return this.language;
143 public void setLanguage(Language language) {
144 this.language = language;
147 public ArticleStatus getStatus() {
151 public void setStatus(ArticleStatus status) {
152 this.status = status;
155 public Set getTypedCategories() {
156 return this.typedCategories;
159 public void setTypedCategories(Set topics) {
160 this.typedCategories = topics;
163 public void addTypedCategory(TypedCategory typedCategory){
164 if(null == typedCategories){
165 typedCategories = new HashSet();
167 typedCategories.add(typedCategory);
170 public Set getMedias() {
174 public void setMedias(Set medias) {
175 this.medias = medias;
178 public boolean equals(Object obj) {
182 if (!(obj instanceof Article)) {
185 Article mObj = (Article) obj;
186 if (null == this.getId() || null == mObj.getId()) {
189 return (this.getId().equals(mObj.getId()));
194 public int hashCode() {
195 if (Integer.MIN_VALUE == this.hashCode) {
196 if (null == this.getId()){
197 return super.hashCode();
199 String hashStr = this.getClass().getName() + ":"
200 + this.getId().hashCode();
201 this.hashCode = hashStr.hashCode();
204 return this.hashCode;
208 * @see java.lang.Object#toString()
210 public String toString() {
211 return new ToStringBuilder(this, ToStringStyle.DEFAULT_STYLE)
212 .append("id", this.getId())