KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > Yasna > forum > CategoryProxy


1 /**
2  * Copyright (C) 2001 Yasna.com. All rights reserved.
3  *
4  * ===================================================================
5  * The Apache Software License, Version 1.1
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions
9  * are met:
10  *
11  * 1. Redistributions of source code must retain the above copyright
12  * notice, this list of conditions and the following disclaimer.
13  *
14  * 2. Redistributions in binary form must reproduce the above copyright
15  * notice, this list of conditions and the following disclaimer in
16  * the documentation and/or other materials provided with the
17  * distribution.
18  *
19  * 3. The end-user documentation included with the redistribution,
20  * if any, must include the following acknowledgment:
21  * "This product includes software developed by
22  * Yasna.com (http://www.yasna.com)."
23  * Alternately, this acknowledgment may appear in the software itself,
24  * if and wherever such third-party acknowledgments normally appear.
25  *
26  * 4. The names "Yazd" and "Yasna.com" must not be used to
27  * endorse or promote products derived from this software without
28  * prior written permission. For written permission, please
29  * contact yazd@yasna.com.
30  *
31  * 5. Products derived from this software may not be called "Yazd",
32  * nor may "Yazd" appear in their name, without prior written
33  * permission of Yasna.com.
34  *
35  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
36  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
37  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
38  * DISCLAIMED. IN NO EVENT SHALL YASNA.COM OR
39  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
40  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
41  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
42  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
43  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
44  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
45  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
46  * SUCH DAMAGE.
47  * ====================================================================
48  *
49  * This software consists of voluntary contributions made by many
50  * individuals on behalf of Yasna.com. For more information
51  * on Yasna.com, please see <http://www.yasna.com>.
52  */

53
54 package com.Yasna.forum;
55
56 import java.util.Date JavaDoc;
57 import java.util.Iterator JavaDoc;
58 import java.util.Enumeration JavaDoc;
59
60 /**
61  * A protection proxy for Categories. A proxy has a set of permissions that are
62  * specified at creation time of the proxy. Subsequently, those permissions
63  * are use to restrict access to protected Category methods. If a user does
64  * not have the right to execute a particular method, and UnauthorizedException
65  * is thrown.
66  *
67  */

68 public class CategoryProxy implements Category {
69
70     private Category category;
71     private Authorization authorization;
72     private ForumPermissions permissions;
73
74     /**
75      * Creates a new CategoryProxy object.
76      *
77      * @param category the category to protect by proxy
78      * @param authorization the user's authorization token
79      * @param permissions the permissions to use with this proxy.
80      */

81     public CategoryProxy(Category category, Authorization authorization,
82             ForumPermissions permissions)
83     {
84         this.category = category;
85         this.authorization = authorization;
86         this.permissions = permissions;
87     }
88
89     //** Methods from interface below**//
90
public String JavaDoc getName() {
91         return category.getName();
92     }
93     public int getOrder(){
94         return category.getOrder();
95     }
96     public void setOrder(int param) throws UnauthorizedException{
97         if (permissions.isSystemOrForumAdmin()) {
98             category.setOrder(param);
99         }
100         else {
101             throw new UnauthorizedException();
102         }
103     }
104     public int getID() {
105         return category.getID();
106     }
107
108     public String JavaDoc getDescription() {
109         return category.getDescription();
110     }
111
112     public Date JavaDoc getCreationDate() {
113         return category.getCreationDate();
114     }
115
116     public Date JavaDoc getModifiedDate() {
117         return category.getModifiedDate();
118     }
119
120     public void setModifiedDate(Date JavaDoc modifiedDate) throws UnauthorizedException {
121         if (permissions.isSystemOrForumAdmin()) {
122             category.setModifiedDate(modifiedDate);
123         }
124         else {
125             throw new UnauthorizedException();
126         }
127     }
128
129     public void setCreationDate(Date JavaDoc creationDate) throws UnauthorizedException {
130         if (permissions.isSystemOrForumAdmin()) {
131             category.setCreationDate(creationDate);
132         }
133         else {
134             throw new UnauthorizedException();
135         }
136     }
137
138     public void setName(String JavaDoc name) throws UnauthorizedException,
139         CategoryAlreadyExistsException {
140         if (permissions.isSystemOrForumAdmin()) {
141             category.setName(name);
142         }
143         else {
144             throw new UnauthorizedException();
145         }
146     }
147
148     public void setDescription(String JavaDoc description) throws UnauthorizedException {
149         if (permissions.isSystemOrForumAdmin()) {
150             category.setDescription(description);
151         }
152         else {
153             throw new UnauthorizedException();
154         }
155     }
156
157     public Iterator JavaDoc forumGroups() {
158         Iterator JavaDoc iterator = category.forumGroups();
159         return new ForumGroupIteratorProxy(iterator, authorization, permissions);
160     }
161
162     public ForumGroup getForumGroup(int forumGroupID) throws ForumGroupNotFoundException
163     {
164         ForumGroup forumGroup = category.getForumGroup(forumGroupID);
165         //Apply protection proxy and return.
166
return new ForumGroupProxy(forumGroup, authorization, permissions);
167     }
168
169     public void deleteForumGroup(ForumGroup forumGroup) throws UnauthorizedException
170     {
171         if (permissions.isSystemOrForumAdmin()) {
172             category.deleteForumGroup(forumGroup);
173         }
174         else {
175             throw new UnauthorizedException();
176         }
177     }
178
179     public ForumGroup createForumGroup(String JavaDoc name, String JavaDoc description) throws UnauthorizedException
180     {
181         if (permissions.isSystemOrForumAdmin()) {
182             ForumGroup forumGroup = category.createForumGroup(name, description);
183             return new ForumGroupProxy(forumGroup, authorization, permissions);
184         }
185         else {
186             throw new UnauthorizedException();
187         }
188     }
189
190 }
Popular Tags