001: /*
002: * File : $Source: /usr/local/cvs/opencms/src/org/opencms/file/CmsGroup.java,v $
003: * Date : $Date: 2008-02-27 12:05:38 $
004: * Version: $Revision: 1.24 $
005: *
006: * This library is part of OpenCms -
007: * the Open Source Content Management System
008: *
009: * Copyright (c) 2002 - 2008 Alkacon Software GmbH (http://www.alkacon.com)
010: *
011: * This library is free software; you can redistribute it and/or
012: * modify it under the terms of the GNU Lesser General Public
013: * License as published by the Free Software Foundation; either
014: * version 2.1 of the License, or (at your option) any later version.
015: *
016: * This library is distributed in the hope that it will be useful,
017: * but WITHOUT ANY WARRANTY; without even the implied warranty of
018: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
019: * Lesser General Public License for more details.
020: *
021: * For further information about Alkacon Software GmbH, please see the
022: * company website: http://www.alkacon.com
023: *
024: * For further information about OpenCms, please see the
025: * project website: http://www.opencms.org
026: *
027: * You should have received a copy of the GNU Lesser General Public
028: * License along with this library; if not, write to the Free Software
029: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
030: */
031:
032: package org.opencms.file;
033:
034: import org.opencms.main.OpenCms;
035: import org.opencms.security.CmsPrincipal;
036: import org.opencms.security.I_CmsPrincipal;
037: import org.opencms.util.CmsMacroResolver;
038: import org.opencms.util.CmsUUID;
039:
040: import java.util.Locale;
041:
042: /**
043: * A group principal in the OpenCms permission system.<p>
044: *
045: * @author Alexander Kandzior
046: * @author Michael Emmerich
047: *
048: * @version $Revision: 1.24 $
049: *
050: * @since 6.0.0
051: *
052: * @see CmsUser
053: */
054: public class CmsGroup extends CmsPrincipal implements I_CmsPrincipal {
055:
056: /** The parent id of the group. */
057: private CmsUUID m_parentId;
058:
059: /**
060: * Creates a new, empty OpenCms group principal.
061: */
062: public CmsGroup() {
063:
064: // noop
065: }
066:
067: /**
068: * Creates a new OpenCms group principal.
069: *
070: * @param id the unique id of the group
071: * @param parentId the is of the parent group
072: * @param name the fully qualified name of the name of the group
073: * @param description the description of the group
074: * @param flags the flags of the group
075: */
076: public CmsGroup(CmsUUID id, CmsUUID parentId, String name,
077: String description, int flags) {
078:
079: m_id = id;
080: m_name = name;
081: m_description = description;
082: m_flags = flags;
083: m_parentId = parentId;
084: }
085:
086: /**
087: * Checks if the provided group name is valid and can be used as an argument value
088: * for {@link #setName(String)}.<p>
089: *
090: * A group name must not be empty or whitespace only.<p>
091: *
092: * @param name the group name to check
093: *
094: * @see org.opencms.security.I_CmsValidationHandler#checkGroupName(String)
095: */
096: public void checkName(String name) {
097:
098: OpenCms.getValidationHandler().checkGroupName(name);
099: }
100:
101: /**
102: * @see java.lang.Object#clone()
103: */
104: public Object clone() {
105:
106: return new CmsGroup(m_id, m_parentId, m_name, m_description,
107: m_flags);
108: }
109:
110: /**
111: * Returns the description of this organizational unit.<p>
112: *
113: * @param locale the locale
114: *
115: * @return the description of this organizational unit
116: */
117: public String getDescription(Locale locale) {
118:
119: CmsMacroResolver macroResolver = new CmsMacroResolver();
120: macroResolver.setMessages(org.opencms.db.generic.Messages.get()
121: .getBundle(locale));
122: return macroResolver.resolveMacros(m_description);
123: }
124:
125: /**
126: * Returns true if this group is disabled.<p>
127: *
128: * @return true if this group is disabled
129: *
130: * @deprecated use {@link CmsPrincipal#isEnabled()} instead
131: */
132: public boolean getDisabled() {
133:
134: return !isEnabled();
135: }
136:
137: /**
138: * Returns the parent group id of this group.<p>
139: *
140: * @return the parent group id of this group
141: */
142: public CmsUUID getParentId() {
143:
144: return m_parentId;
145: }
146:
147: /**
148: * @see org.opencms.security.I_CmsPrincipal#isGroup()
149: */
150: public boolean isGroup() {
151:
152: return true;
153: }
154:
155: /**
156: * Returns <code>true</code> if this group is enabled as a project user group.<p>
157: *
158: * @return <code>true</code> if this group is enabled as a project user group
159: */
160: public boolean isProjectCoWorker() {
161:
162: return (getFlags() & I_CmsPrincipal.FLAG_GROUP_PROJECT_USER) == I_CmsPrincipal.FLAG_GROUP_PROJECT_USER;
163: }
164:
165: /**
166: * Returns <code>true</code> if this group is enabled as a project manager group.<p>
167: *
168: * @return <code>true</code> if this group is enabled as a project manager group
169: */
170: public boolean isProjectManager() {
171:
172: return (getFlags() & I_CmsPrincipal.FLAG_GROUP_PROJECT_MANAGER) == I_CmsPrincipal.FLAG_GROUP_PROJECT_MANAGER;
173: }
174:
175: /**
176: * Checks if this group is a role group.<p>
177: *
178: * @return <code>true</code> if this group is a role group
179: */
180: public boolean isRole() {
181:
182: return (getFlags() & I_CmsPrincipal.FLAG_GROUP_ROLE) == I_CmsPrincipal.FLAG_GROUP_ROLE;
183: }
184:
185: /**
186: * @see org.opencms.security.I_CmsPrincipal#isUser()
187: */
188: public boolean isUser() {
189:
190: return false;
191: }
192:
193: /**
194: * Checks if this group is a virtual group, emulating a role.<p>
195: *
196: * @return if this group is a virtual group
197: */
198: public boolean isVirtual() {
199:
200: return (getFlags() & I_CmsPrincipal.FLAG_GROUP_VIRTUAL) == I_CmsPrincipal.FLAG_GROUP_VIRTUAL;
201: }
202:
203: /**
204: * Disables this group.<p>
205: *
206: * @deprecated use {@link CmsPrincipal#setEnabled(boolean)} instead
207: */
208: public void setDisabled() {
209:
210: setEnabled(false);
211: }
212:
213: /**
214: * Enables this group.<p>
215: *
216: * @deprecated use {@link CmsPrincipal#setEnabled(boolean)} instead
217: */
218: public void setEnabled() {
219:
220: setEnabled(true);
221: }
222:
223: /**
224: * Sets the parent group id of this group.<p>
225: *
226: * @param parentId the parent group id to set
227: */
228: public void setParentId(CmsUUID parentId) {
229:
230: m_parentId = parentId;
231: }
232:
233: /**
234: * Sets the project user flag for this group to the given value.<p>
235: *
236: * @param value the value to set
237: */
238: public void setProjectCoWorker(boolean value) {
239:
240: if (isProjectCoWorker() != value) {
241: setFlags(getFlags()
242: ^ I_CmsPrincipal.FLAG_GROUP_PROJECT_USER);
243: }
244: }
245:
246: /**
247: * Sets the project manager flag for this group to the given value.<p>
248: *
249: * @param value the value to set
250: */
251: public void setProjectManager(boolean value) {
252:
253: if (isProjectManager() != value) {
254: setFlags(getFlags()
255: ^ I_CmsPrincipal.FLAG_GROUP_PROJECT_MANAGER);
256: }
257: }
258:
259: /**
260: * @see java.lang.Object#toString()
261: */
262: public String toString() {
263:
264: StringBuffer result = new StringBuffer();
265: result.append("[Group]");
266: result.append(" name:");
267: result.append(getName());
268: result.append(" id:");
269: result.append(m_id);
270: result.append(" description:");
271: result.append(m_description);
272: return result.toString();
273: }
274: }
|