001/** 002 * Copyright 2005-2016 The Kuali Foundation 003 * 004 * Licensed under the Educational Community License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.opensource.org/licenses/ecl2.php 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016package org.kuali.rice.kim.api.group; 017 018import org.kuali.rice.core.api.mo.common.GloballyUnique; 019import org.kuali.rice.core.api.mo.common.Identifiable; 020import org.kuali.rice.core.api.mo.common.Versioned; 021import org.kuali.rice.core.api.mo.common.active.Inactivatable; 022 023import java.util.Map; 024/** 025 * This is the contract for a Group. A group is a collection of principals. It's membership consists of direct principal 026 * assignment and/or nested group membership. All groups are uniquely identified by a namespace 027 * code plus a name. 028 * 029 * 030 * @author Kuali Rice Team (rice.collab@kuali.org) 031 */ 032 033public interface GroupContract extends Versioned, GloballyUnique, Inactivatable, Identifiable { 034 035 /** 036 * This is the namespace code for the Group. 037 * 038 * <p> 039 * This is a namespace code assigned to a Group. Together with name, it makes up another unique identifier for Group 040 * </p> 041 * 042 * @return namespaceCode 043 */ 044 String getNamespaceCode(); 045 046 /** 047 * This is the name for the Group. 048 * 049 * <p> 050 * This is a name assigned to a Group. Together with NamespaceCode, it makes up another unique identifier for Group 051 * </p> 052 * 053 * @return name 054 */ 055 String getName(); 056 057 /** 058 * This a description for the Group. 059 * 060 * <p> 061 * This is a description assigned to a Group. 062 * </p> 063 * 064 * @return description 065 */ 066 String getDescription(); 067 068 /** 069 * This a Kim Type Id for the Group. 070 * 071 * <p> 072 * This links a Kim Type to the Group to allow custom types of Groups. 073 * </p> 074 * 075 * @return description 076 */ 077 String getKimTypeId(); 078 079 /** 080 * This is a set of Attributes for a Group. 081 * 082 * <p> 083 * This is a set of attributes which are key-label pairs that are defined by the Group's Kim Type. 084 * </p> 085 * 086 * @return attributes 087 */ 088 Map<String, String> getAttributes(); 089 090}