/* Copyright (c) 2003 eInnovation Inc. All rights reserved This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. */ package com.openedit.users; import java.io.Serializable; import java.util.Collection; import java.util.HashSet; import java.util.Iterator; import java.util.Map; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import com.openedit.users.filesystem.FileSystemObject; /** * DOCUMENT ME! * * @author avery To change this generated comment edit the template variable "typecomment": * Window>Preferences>Java>Templates. */ public class BaseGroup extends FileSystemObject implements Group, Serializable, Comparable { protected long fieldLastModified; private transient static Log log = null; private Log getLog() { if( log == null) { log = LogFactory.getLog(BaseGroup.class); } return log; } protected Collection fieldPermissions; protected String fieldName; protected String fieldId; public BaseGroup() { } /** * @see com.openedit.users.Group#getName() */ public String getName() { if (fieldName == null) return getId(); return fieldName; } /** * @see com.openedit.users.Group#getPermissions() */ public Collection getPermissions() { if (fieldPermissions == null) { fieldPermissions = new HashSet(); } return fieldPermissions; } /* (non-Javadoc) * @see com.openedit.users.Group#addPermission(String) */ public void addPermission(String inPermission) throws UserManagerException { if( hasPermission(inPermission)) { return; } getPermissions().add(new EnabledPermission(inPermission)); } public boolean hasPermission(String inPermission) { for (Iterator iterator = getPermissions().iterator(); iterator.hasNext();) { Object existingpermission = (Object) iterator.next(); if( existingpermission.equals(inPermission)) { return true; } } String ok = getPropertyContainer().getString( inPermission ); if (Boolean.parseBoolean(ok)) { return true; } return false; } /* (non-Javadoc) * @see com.openedit.users.Group#removePermission(String) */ public void removePermission(String inPermission) throws UserManagerException { for (Iterator iterator = getPermissions().iterator(); iterator.hasNext();) { Object existingpermission = (Object) iterator.next(); if( existingpermission.equals(inPermission)) { getPermissions().remove(existingpermission); break; } } } /** * Returns the string representation of this object, that can be used when sorting groups * alphabetically. * * @return string representing this group */ public String toString() { return getName(); } public void setName(String inGroupName) { fieldName = inGroupName; } public long getLastModified() { return fieldLastModified; } public void setLastModified(long inLastModified) { fieldLastModified = inLastModified; } public String getId() { if( fieldId == null && fieldName != null && fieldName.length() != 0) { return getName(); } return fieldId; } public void setId(String inId) { fieldId = inId; } public void setProperties(Map<String,String> inProperties) { getProperties().putAll(inProperties); } public void setProperty(String inId, String inValue) { if( inId.equals("id")) { setId(inValue); } else if( inId.equals("name")) { setName(inValue); } else { put(inId,inValue); } } public void setPermissions(Collection inPermissions) { fieldPermissions = inPermissions; } public String get(String inPropertyName) { if( "id".equals(inPropertyName)) { return getId(); } else if ( "name".equals(inPropertyName)) { return getName(); } return super.get(inPropertyName); } @Override public int compareTo(Object g1) { Group group = (Group) g1; //compare by name return this.getName().compareToIgnoreCase(group.getName()); } public void setValues(String inKey, Collection<String> inValues) { StringBuffer values = new StringBuffer(); for (Iterator iterator = inValues.iterator(); iterator.hasNext();) { String detail = (String) iterator.next(); values.append(detail); if( iterator.hasNext()) { values.append(" | "); } } setProperty(inKey,values.toString()); } }