001: /**
002: * Copyright (c) 2003-2007, David A. Czarnecki
003: * All rights reserved.
004: *
005: * Redistribution and use in source and binary forms, with or without
006: * modification, are permitted provided that the following conditions are met:
007: *
008: * Redistributions of source code must retain the above copyright notice, this list of conditions and the
009: * following disclaimer.
010: * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the
011: * following disclaimer in the documentation and/or other materials provided with the distribution.
012: * Neither the name of "David A. Czarnecki" and "blojsom" nor the names of its contributors may be used to
013: * endorse or promote products derived from this software without specific prior written permission.
014: * Products derived from this software may not be called "blojsom", nor may "blojsom" appear in their name,
015: * without prior written permission of David A. Czarnecki.
016: *
017: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
018: * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
019: * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
020: * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
021: * EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
022: * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
023: * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
024: * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
025: * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
026: * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
027: * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
028: * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
029: * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
030: */package org.blojsom.blog.database;
031:
032: import org.blojsom.blog.Category;
033: import org.blojsom.util.BlojsomUtils;
034:
035: import java.io.Serializable;
036: import java.util.Map;
037: import java.util.HashMap;
038:
039: /**
040: * DatabaseCategory
041: *
042: * @author David Czarnecki
043: * @since blojsom 3.0
044: * @version $Id: DatabaseCategory.java,v 1.5 2007/01/17 02:35:16 czarneckid Exp $
045: */
046: public class DatabaseCategory implements Category, Serializable {
047:
048: private Integer _id;
049: private Integer _parentCategoryId;
050: private Integer _blogId;
051: private Category _parentCategory;
052:
053: protected String _name;
054: protected Map _metaData = null;
055: protected String _description = null;
056:
057: /**
058: * Create a new instance of the database category
059: */
060: public DatabaseCategory() {
061: }
062:
063: /**
064: * Get the category ID
065: *
066: * @return Category ID
067: */
068: public Integer getId() {
069: return _id;
070: }
071:
072: /**
073: * Set the category ID
074: *
075: * @param id Category ID
076: */
077: public void setId(Integer id) {
078: _id = id;
079: }
080:
081: /**
082: * Get the blog parent category ID
083: *
084: * @return Parent category ID
085: */
086: public Integer getParentCategoryId() {
087: return _parentCategoryId;
088: }
089:
090: /**
091: * Se the parent category ID
092: *
093: * @param parentCategoryId Parent category ID
094: */
095: public void setParentCategoryId(Integer parentCategoryId) {
096: _parentCategoryId = parentCategoryId;
097: }
098:
099: /**
100: * Get the blog ID
101: *
102: * @return Blog ID
103: */
104: public Integer getBlogId() {
105: return _blogId;
106: }
107:
108: /**
109: * Set the blog ID
110: *
111: * @param blogId Blog ID
112: */
113: public void setBlogId(Integer blogId) {
114: _blogId = blogId;
115: }
116:
117: /**
118: * Set a new name for this category
119: *
120: * @param name Category name
121: */
122: public void setName(String name) {
123: _name = name;
124: }
125:
126: /**
127: * Return the category name
128: *
129: * @return Category name
130: */
131: public String getName() {
132: return _name;
133: }
134:
135: /**
136: * Return the category name encoded for a link
137: *
138: * @return Category name encoded as UTF-8 with preserved "/" and "+" characters
139: */
140: public String getEncodedName() {
141: return BlojsomUtils.urlEncodeForLink(_name);
142: }
143:
144: /**
145: * Sets the description of this category
146: *
147: * @param desc The new description of the category
148: */
149: public void setDescription(String description) {
150: _description = description;
151: }
152:
153: /**
154: * Retrieves the description of this category
155: *
156: * @return The description of the category
157: */
158: public String getDescription() {
159: return _description;
160: }
161:
162: /**
163: * Set the meta-data associated with this category
164: *
165: * @param metaData The map to be associated with the category as meta-data
166: */
167: public void setMetaData(Map metaData) {
168: _metaData = metaData;
169: }
170:
171: /**
172: * Retrieves the meta-data associated with this category
173: *
174: * @return The properties associated with the category as meta-data, or null if no metadata exists
175: */
176: public Map getMetaData() {
177: if (_metaData == null) {
178: return new HashMap();
179: }
180:
181: return _metaData;
182: }
183:
184: /**
185: * Returns the parent category of this category. Defaults to "/"
186: *
187: * @return {@link Category} containing the parent category
188: */
189: public Category getParentCategory() {
190: return _parentCategory;
191: }
192:
193: /**
194: * Sets the parent category of this category
195: *
196: * @param cateogry {@link Category} that represents the parent category
197: */
198: public void setParentCategory(Category parentCategory) {
199: _parentCategory = parentCategory;
200: }
201: }
|