001: /*
002: * $Header: /cvsroot/mvnforum/mvnforum/src/com/mvnforum/auth/StepAndChannelListPermission.java,v 1.4 2007/10/09 11:09:12 lexuanttkhtn Exp $
003: * $Author: lexuanttkhtn $
004: * $Revision: 1.4 $
005: * $Date: 2007/10/09 11:09:12 $
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: Phuong, Pham Dinh Duy
039: */
040: package com.mvnforum.auth;
041:
042: import java.util.*;
043:
044: public class StepAndChannelListPermission {
045:
046: List stepAndChannelList = new ArrayList();
047:
048: //with all channels
049: List stepList = new ArrayList();
050:
051: boolean allStepAndChannelsPermission = false;
052:
053: boolean bypassPrivateChannel = false;
054:
055: public StepAndChannelListPermission() {
056: }
057:
058: void setAllStepAndChannelsPermission(boolean permission) {
059: allStepAndChannelsPermission = permission;
060: }
061:
062: boolean isGlobalPermission() {
063: return allStepAndChannelsPermission;
064: }
065:
066: void setAllChannelsPermission(int stepID, boolean permission) {
067:
068: // always remove stepID and channelID
069: for (Iterator iterator = stepList.iterator(); iterator
070: .hasNext();) {
071:
072: int step = ((Integer) iterator.next()).intValue();
073:
074: if (step == stepID) {
075: iterator.remove();
076: }
077: }
078:
079: // now add to the list if the permission = true
080: if (permission) {
081: // add permission
082: stepList.add(new Integer(stepID));
083: }
084: }
085:
086: void setStepAndChannelPermission(int stepID, int channelID,
087: boolean permission) {
088:
089: // always remove stepID and channelID
090: for (Iterator iterator = stepAndChannelList.iterator(); iterator
091: .hasNext();) {
092:
093: StepAndChannel stepAndChannel = (StepAndChannel) iterator
094: .next();
095:
096: int step = stepAndChannel.getStepID();
097: int channel = stepAndChannel.getChannelID();
098:
099: if ((step == stepID) && (channel == channelID)) {
100: iterator.remove();
101: }
102: }
103:
104: // now add to the list if the permission = true
105: if (permission) {
106: // add permission
107: stepAndChannelList
108: .add(new StepAndChannel(stepID, channelID));
109: }
110: }
111:
112: boolean hasPermission(int stepID, int channelID) {
113:
114: for (Iterator iter = stepList.iterator(); iter.hasNext();) {
115: int step = ((Integer) iter.next()).intValue();
116:
117: if (step == stepID) {
118: return true;
119: }
120: }
121:
122: for (Iterator iterator = stepAndChannelList.iterator(); iterator
123: .hasNext();) {
124:
125: StepAndChannel stepAndChannel = (StepAndChannel) iterator
126: .next();
127:
128: int step = stepAndChannel.getStepID();
129: int channel = stepAndChannel.getChannelID();
130:
131: if ((step == stepID) && (channel == channelID)) {
132: return true;
133: }
134: }
135:
136: if (allStepAndChannelsPermission) {
137: if (bypassPrivateChannel) {
138: return true;
139: }
140:
141: //TODO should check channelType is private or not
142: return true;
143: }
144:
145: return false;
146: }
147:
148: boolean hasPermssionInAtLeastOneChannelOrStep() {
149:
150: // now check if have permission on any channels by checking the channelList size
151: if ((stepList.size() > 0) || (stepAndChannelList.size() > 0)) {
152: //stepList or stepAndChannelList size > 0 means there is permission on at least one channel
153: return true;
154: }
155:
156: // have permission on all channels, then we check if this is a Private Channel
157: if (allStepAndChannelsPermission) {
158: if (bypassPrivateChannel) {
159: return true;
160: }
161:
162: //TODO should check channelType is private or not
163: return true;
164: }
165:
166: // if not found, then we return false (no permission on any channels)
167: return false;
168: }
169:
170: boolean hasPermssionInStepInAtLeastOneChannel(int stepID) {
171:
172: for (Iterator iter = stepList.iterator(); iter.hasNext();) {
173:
174: int step = ((Integer) iter.next()).intValue();
175:
176: if (step == stepID) {
177: return true;
178: }
179: }
180:
181: for (Iterator iterator = stepAndChannelList.iterator(); iterator
182: .hasNext();) {
183:
184: StepAndChannel stepAndChannel = (StepAndChannel) iterator
185: .next();
186:
187: int step = stepAndChannel.getStepID();
188:
189: if (step == stepID) {
190: return true;
191: }
192: }
193:
194: if (allStepAndChannelsPermission) {
195: if (bypassPrivateChannel) {
196: return true;
197: }
198:
199: //TODO should check channelType is private or not
200: return true;
201: }
202:
203: return false;
204: }
205:
206: public boolean isBypassPrivateChannel() {
207: return bypassPrivateChannel;
208: }
209:
210: public void setBypassPrivateChannel(boolean ignorePrivateOption) {
211: this.bypassPrivateChannel = ignorePrivateOption;
212: }
213:
214: }
|