001: /*
002: * $Header: /cvsroot/mvnforum/mvnforum/src/com/mvnforum/auth/ChannelListPermission.java,v 1.7 2007/10/09 11:09:11 lexuanttkhtn Exp $
003: * $Author: lexuanttkhtn $
004: * $Revision: 1.7 $
005: * $Date: 2007/10/09 11:09:11 $
006: *
007: * ====================================================================
008: *
009: * Copyright (C) 2002-2007 by MyVietnam.net
010: *
011: * All copyright notices regarding mvnForum MUST remain
012: * intact in the scripts and in the outputted HTML.
013: * The "powered by" text/logo with a link back to
014: * http://www.mvnForum.com and http://www.MyVietnam.net in
015: * the footer of the pages MUST remain visible when the pages
016: * are viewed on the internet or intranet.
017: *
018: * This program is free software; you can redistribute it and/or modify
019: * it under the terms of the GNU General Public License as published by
020: * the Free Software Foundation; either version 2 of the License, or
021: * any later version.
022: *
023: * This program is distributed in the hope that it will be useful,
024: * but WITHOUT ANY WARRANTY; without even the implied warranty of
025: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
026: * GNU General Public License for more details.
027: *
028: * You should have received a copy of the GNU General Public License
029: * along with this program; if not, write to the Free Software
030: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
031: *
032: * Support can be obtained from support forums at:
033: * http://www.mvnForum.com/mvnforum/index
034: *
035: * Correspondence and Marketing Questions can be sent to:
036: * info at MyVietnam net
037: *
038: * @author: Minh Nguyen
039: * @author: Mai Nguyen
040: */
041: package com.mvnforum.auth;
042:
043: import java.util.ArrayList;
044: import java.util.Iterator;
045:
046: import org.apache.commons.logging.Log;
047: import org.apache.commons.logging.LogFactory;
048:
049: /**
050: * This class is used in MVNForumPermissionImpl to imnplement channel-specific permission
051: * NOTE: This class is NOT thread-safe
052: */
053: class ChannelListPermission {
054:
055: private static Log log = LogFactory
056: .getLog(ChannelListPermission.class);
057:
058: ArrayList channelList = new ArrayList();
059:
060: boolean allChannelsPermission = false;
061:
062: boolean bypassPrivateChannel = false;
063:
064: public ChannelListPermission() {
065: }
066:
067: void setAllChannelsPermission(boolean permission) {
068: allChannelsPermission = permission;
069: }
070:
071: void setChannelPermission(int channelID, boolean permission) {
072: // always remove channelID
073: Iterator iter = channelList.iterator();
074: while (iter.hasNext()) {
075: int currentChannelID = ((Integer) iter.next()).intValue();
076: if (currentChannelID == channelID) {
077: iter.remove();
078: }
079: } //while
080:
081: // now add to the list if the permission = false
082: if (permission) {
083: // add permission
084: channelList.add(new Integer(channelID));
085: }
086: }
087:
088: boolean hasPermission(int channelID) {
089:
090: for (int i = 0; i < channelList.size(); i++) {
091: int currentChannelID = ((Integer) channelList.get(i))
092: .intValue();
093: if (currentChannelID == channelID) {
094: return true;
095: }
096: }
097:
098: // have permission on all channels, then we check if this is a Private Channel
099: if (allChannelsPermission) {
100: if (bypassPrivateChannel) {
101: return true;
102: }
103:
104: // now we assume (channelBean.getChannelType() == ChannelBean.CHANNEL_TYPE_DEFAULT)
105: return true;
106: /*
107: try {
108: ChannelBean channelBean = ChannelCache.getInstance().getBean(channelID);
109: if (channelBean.getChannelType() == ChannelBean.CHANNEL_TYPE_DEFAULT) {
110: return true;
111: }
112: } catch (Exception ex) {
113: log.error("Cannot get the ChannelBean in ChannelListPermission", ex);
114: }*/
115: }
116:
117: // if not found, then we return false (no permission on the channel)
118: return false;
119: }
120:
121: boolean hasPermssionInAnyChannels() {
122:
123: // now check if have permission on any channels by checking the channelList size
124: if (channelList.size() > 0) {
125: // channelList size > 0 means there is permission on at least one channel
126: return true;
127: }
128:
129: // have permission on all channels, then we check if this is a Private Channel
130: if (allChannelsPermission) {
131: if (bypassPrivateChannel) {
132: return true;
133: }
134:
135: // now we assume (channelBean.getChannelType() == ChannelBean.CHANNEL_TYPE_DEFAULT)
136: return true;
137: /*
138: try {
139: Collection channelBeans = ChannelCache.getInstance().getBeans();
140: for (Iterator iter = channelBeans.iterator(); iter.hasNext(); ) {
141: ChannelBean channelBean = (ChannelBean)iter.next();
142: if (channelBean.getChannelType() == ChannelBean.CHANNEL_TYPE_DEFAULT) {
143: return true;
144: }
145: }
146: } catch (Exception ex) {
147: log.error("Cannot get Channel Beans in ChannelListPermission", ex);
148: }*/
149: }
150:
151: // if not found, then we return false (no permission on any channels)
152: return false;
153: }
154:
155: public boolean isBypassPrivateChannel() {
156: return bypassPrivateChannel;
157: }
158:
159: public void setBypassPrivateChannel(boolean ignorePrivateOption) {
160: this.bypassPrivateChannel = ignorePrivateOption;
161: }
162: }
|