1 /* 2 * SPDX-FileCopyrightText: none 3 * SPDX-License-Identifier: CC0-1.0 4 */ 5 6 package gov.nist.secauto.oscal.lib.model.control.catalog; 7 8 import gov.nist.secauto.oscal.lib.model.Control; 9 import gov.nist.secauto.oscal.lib.model.Parameter; 10 11 import java.util.List; 12 import java.util.stream.Stream; 13 14 import edu.umd.cs.findbugs.annotations.NonNull; 15 16 public interface IControlContainer { 17 18 List<Control> getControls(); 19 20 /** 21 * Add a new {@link Control} item to the end of the underlying collection. 22 * 23 * @param item 24 * the item to add 25 * @return {@code true} 26 */ 27 boolean addControl(@NonNull Control item); 28 29 /** 30 * Remove the first matching {@link Control} item from the underlying 31 * collection. 32 * 33 * @param item 34 * the item to remove 35 * @return {@code true} if the item was removed or {@code false} otherwise 36 */ 37 boolean removeControl(@NonNull Control item); 38 39 List<Parameter> getParams(); 40 41 /** 42 * Add a new {@link Parameter} item to the underlying collection. 43 * 44 * @param item 45 * the item to add 46 * @return {@code true} 47 */ 48 boolean addParam(@NonNull Parameter item); 49 50 /** 51 * Remove the first matching {@link Parameter} item from the underlying 52 * collection. 53 * 54 * @param item 55 * the item to remove 56 * @return {@code true} if the item was removed or {@code false} otherwise 57 */ 58 boolean removeParam(@NonNull Parameter item); 59 60 /** 61 * Get the parameter identifiers referenced in the object's context, but not by 62 * their child objects. 63 * 64 * @return a stream of identifiers 65 */ 66 Stream<String> getReferencedParameterIds(); 67 }