001/*
002 * Copyright (c) 2006-2011 Nuxeo SA (http://nuxeo.com/) and others.
003 *
004 * All rights reserved. This program and the accompanying materials
005 * are made available under the terms of the Eclipse Public License v1.0
006 * which accompanies this distribution, and is available at
007 * http://www.eclipse.org/legal/epl-v10.html
008 *
009 * Contributors:
010 *     Nuxeo - initial API and implementation
011 *
012 * $Id$
013 */
014
015package org.nuxeo.ecm.core.api;
016
017import java.io.Serializable;
018import java.util.List;
019
020/**
021 * Holds the list of member users and subgroups for a group.
022 *
023 * @author <a href="mailto:glefter@nuxeo.com">George Lefter</a>
024 */
025public interface NuxeoGroup extends Serializable {
026
027    String PREFIX = "group:";
028
029    /**
030     * Gets the list of member users of this group.
031     *
032     * @return the list of member users of this group
033     */
034    List<String> getMemberUsers();
035
036    /**
037     * Gets the list of member groups of this group.
038     *
039     * @return the list of member groups of this group
040     */
041    List<String> getMemberGroups();
042
043    /**
044     * Gets the list of groups this group is a member of.
045     *
046     * @return the list of member groups of this group
047     */
048    List<String> getParentGroups();
049
050    /**
051     * Sets the list of member users for this group.
052     *
053     * @param users a list of users
054     */
055    void setMemberUsers(List<String> users);
056
057    /**
058     * Sets the list of member groups for this group.
059     *
060     * @param groups a list of groups
061     */
062    void setMemberGroups(List<String> groups);
063
064    /**
065     * Sets the list of groups this group is member of.
066     *
067     * @param groups a list of groups
068     */
069    void setParentGroups(List<String> groups);
070
071    /**
072     * Gets the name of the group.
073     *
074     * @return the name of the group
075     */
076    String getName();
077
078    /**
079     * Sets the name of this group.
080     *
081     * @param name the new name of the group
082     */
083    void setName(String name);
084
085    /**
086     * Gets the label of the group
087     *
088     * @return the label of the group
089     */
090    String getLabel();
091
092    /**
093     * Sets the label of this group.
094     *
095     * @param label the label of the group
096     */
097    void setLabel(String label);
098
099}