001: /**
002: * Copyright (C) 2001 Yasna.com. All rights reserved.
003: *
004: * ===================================================================
005: * The Apache Software License, Version 1.1
006: *
007: * Redistribution and use in source and binary forms, with or without
008: * modification, are permitted provided that the following conditions
009: * are met:
010: *
011: * 1. Redistributions of source code must retain the above copyright
012: * notice, this list of conditions and the following disclaimer.
013: *
014: * 2. Redistributions in binary form must reproduce the above copyright
015: * notice, this list of conditions and the following disclaimer in
016: * the documentation and/or other materials provided with the
017: * distribution.
018: *
019: * 3. The end-user documentation included with the redistribution,
020: * if any, must include the following acknowledgment:
021: * "This product includes software developed by
022: * Yasna.com (http://www.yasna.com)."
023: * Alternately, this acknowledgment may appear in the software itself,
024: * if and wherever such third-party acknowledgments normally appear.
025: *
026: * 4. The names "Yazd" and "Yasna.com" must not be used to
027: * endorse or promote products derived from this software without
028: * prior written permission. For written permission, please
029: * contact yazd@yasna.com.
030: *
031: * 5. Products derived from this software may not be called "Yazd",
032: * nor may "Yazd" appear in their name, without prior written
033: * permission of Yasna.com.
034: *
035: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
036: * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
037: * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
038: * DISCLAIMED. IN NO EVENT SHALL YASNA.COM OR
039: * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
040: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
041: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
042: * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
043: * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
044: * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
045: * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
046: * SUCH DAMAGE.
047: * ====================================================================
048: *
049: * This software consists of voluntary contributions made by many
050: * individuals on behalf of Yasna.com. For more information
051: * on Yasna.com, please see <http://www.yasna.com>.
052: */package com.Yasna.forum;
053:
054: import java.util.Iterator;
055:
056: /**
057: * Protection proxy for the Group interface. It restricts access of certain
058: * methods to those that have the proper permissions to administer this object.
059: */
060: public class GroupProxy implements Group {
061:
062: /** Group object acting as proxy for. */
063: private Group group;
064: /** The authorization token used for gaining access to this proxy. */
065: private Authorization authorization;
066: /** The permissions for the group that correspond to the authorization. */
067: private ForumPermissions permissions;
068:
069: public GroupProxy(Group group, Authorization authorization,
070: ForumPermissions permissions) {
071: this .group = group;
072: this .authorization = authorization;
073: this .permissions = permissions;
074: }
075:
076: public int getID() {
077: return group.getID();
078: }
079:
080: public String getName() {
081: return group.getName();
082: }
083:
084: public void setName(String name) throws UnauthorizedException {
085: if (permissions.get(ForumPermissions.SYSTEM_ADMIN)
086: || permissions.get(ForumPermissions.GROUP_ADMIN)) {
087: group.setName(name);
088: } else {
089: throw new UnauthorizedException();
090: }
091: }
092:
093: public boolean getAutoGroupMembership() {
094: return group.getAutoGroupMembership();
095: }
096:
097: public void setAutoGroupMembership(boolean param)
098: throws UnauthorizedException {
099: if (permissions.get(ForumPermissions.SYSTEM_ADMIN)
100: || permissions.get(ForumPermissions.GROUP_ADMIN)) {
101: group.setAutoGroupMembership(param);
102: } else {
103: throw new UnauthorizedException();
104: }
105: }
106:
107: public String getDescription() {
108: return group.getDescription();
109: }
110:
111: public void setDescription(String description)
112: throws UnauthorizedException {
113: if (permissions.get(ForumPermissions.SYSTEM_ADMIN)
114: || permissions.get(ForumPermissions.GROUP_ADMIN)) {
115: group.setDescription(description);
116: } else {
117: throw new UnauthorizedException();
118: }
119: }
120:
121: public void addAdministrator(User user)
122: throws UnauthorizedException {
123: if (permissions.get(ForumPermissions.SYSTEM_ADMIN)
124: || permissions.get(ForumPermissions.GROUP_ADMIN)) {
125: group.addAdministrator(user);
126: } else {
127: throw new UnauthorizedException();
128: }
129: }
130:
131: public void removeAdministrator(User user)
132: throws UnauthorizedException {
133: if (permissions.get(ForumPermissions.SYSTEM_ADMIN)
134: || permissions.get(ForumPermissions.GROUP_ADMIN)) {
135: group.removeAdministrator(user);
136: } else {
137: throw new UnauthorizedException();
138: }
139: }
140:
141: public void addMember(User user) throws UnauthorizedException {
142: if (permissions.get(ForumPermissions.SYSTEM_ADMIN)
143: || permissions.get(ForumPermissions.GROUP_ADMIN)) {
144: group.addMember(user);
145: } else {
146: throw new UnauthorizedException();
147: }
148: }
149:
150: public void removeMember(User user) throws UnauthorizedException {
151: if (permissions.get(ForumPermissions.SYSTEM_ADMIN)
152: || permissions.get(ForumPermissions.GROUP_ADMIN)) {
153: group.removeMember(user);
154: } else {
155: throw new UnauthorizedException();
156: }
157: }
158:
159: public boolean isAdministrator(User user) {
160: return group.isAdministrator(user);
161: }
162:
163: public boolean isMember(User user) {
164: return group.isMember(user);
165: }
166:
167: public int getAdministratorCount() {
168: return group.getAdministratorCount();
169: }
170:
171: public int getMemberCount() {
172: return group.getMemberCount();
173: }
174:
175: public Iterator members() {
176: return group.members();
177: }
178:
179: public Iterator administrators() {
180: return group.administrators();
181: }
182:
183: public ForumPermissions getPermissions(Authorization authorization) {
184: return group.getPermissions(authorization);
185: }
186:
187: public boolean hasPermission(int type) {
188: return permissions.get(type);
189: }
190: }
|