001/*
002 * SPDX-FileCopyrightText: none
003 * SPDX-License-Identifier: CC0-1.0
004 */
005
006package gov.nist.secauto.oscal.lib.model.control.catalog;
007
008import gov.nist.secauto.oscal.lib.model.CatalogGroup;
009
010import java.util.List;
011
012import edu.umd.cs.findbugs.annotations.NonNull;
013
014public interface IGroupContainer extends IControlContainer {
015
016  List<CatalogGroup> getGroups();
017
018  /**
019   * Add a new {@link CatalogGroup} item to the end of the underlying collection.
020   *
021   * @param item
022   *          the item to add
023   * @return {@code true}
024   */
025  boolean addGroup(@NonNull CatalogGroup item);
026
027  /**
028   * Remove the first matching {@link CatalogGroup} item from the underlying
029   * collection.
030   *
031   * @param item
032   *          the item to remove
033   * @return {@code true} if the item was removed or {@code false} otherwise
034   */
035  boolean removeGroup(@NonNull CatalogGroup item);
036}