View Javadoc
1   package gov.nist.secauto.oscal.lib.model;
2   
3   import gov.nist.secauto.metaschema.binding.model.annotations.BoundAssembly;
4   import gov.nist.secauto.metaschema.binding.model.annotations.BoundField;
5   import gov.nist.secauto.metaschema.binding.model.annotations.BoundFieldValue;
6   import gov.nist.secauto.metaschema.binding.model.annotations.GroupAs;
7   import gov.nist.secauto.metaschema.binding.model.annotations.MetaschemaAssembly;
8   import gov.nist.secauto.metaschema.model.common.JsonGroupAsBehavior;
9   import gov.nist.secauto.metaschema.model.common.datatype.markup.MarkupMultiline;
10  import gov.nist.secauto.metaschema.model.common.datatype.markup.MarkupMultilineAdapter;
11  import gov.nist.secauto.metaschema.model.common.util.ObjectUtils;
12  import java.lang.Override;
13  import java.lang.String;
14  import java.util.LinkedList;
15  import java.util.List;
16  import org.apache.commons.lang3.builder.MultilineRecursiveToStringStyle;
17  import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
18  
19  /**
20   * Identifies the controls being assessed and their control objectives.
21   */
22  @MetaschemaAssembly(
23      formalName = "Reviewed Controls and Control Objectives",
24      description = "Identifies the controls being assessed and their control objectives.",
25      name = "reviewed-controls",
26      metaschema = OscalAssessmentCommonMetaschema.class,
27      remarks = "In the context of an assessment plan, this construct is used to identify the controls and control objectives that are to be assessed. In the context of an assessment result, this construct is used to identify the actual controls and objectives that were assessed, reflecting any changes from the plan.\n"
28              + "\n"
29              + "When resolving the selection of controls and control objectives, the following processing will occur:\n"
30              + "\n"
31              + "1. Controls will be resolved by creating a set of controls based on the control-selections by first handling the includes, and then removing any excluded controls.\n"
32              + "\n"
33              + "2. The set of control objectives will be resolved from the set of controls that was generated in the previous step. The set of control objectives is based on the control-objective-selection by first handling the includes, and then removing any excluded control objectives."
34  )
35  public class ReviewedControls {
36    /**
37     * "A human-readable description of control objectives."
38     */
39    @BoundField(
40        formalName = "Control Objective Description",
41        description = "A human-readable description of control objectives.",
42        useName = "description"
43    )
44    @BoundFieldValue(
45        typeAdapter = MarkupMultilineAdapter.class
46    )
47    private MarkupMultiline _description;
48  
49    @BoundAssembly(
50        formalName = "Property",
51        description = "An attribute, characteristic, or quality of the containing object expressed as a namespace qualified name/value pair.",
52        useName = "prop",
53        maxOccurs = -1
54    )
55    @GroupAs(
56        name = "props",
57        inJson = JsonGroupAsBehavior.LIST
58    )
59    private List<Property> _props;
60  
61    @BoundAssembly(
62        formalName = "Link",
63        description = "A reference to a local or remote resource, that has a specific relation to the containing object.",
64        useName = "link",
65        maxOccurs = -1
66    )
67    @GroupAs(
68        name = "links",
69        inJson = JsonGroupAsBehavior.LIST
70    )
71    private List<Link> _links;
72  
73    /**
74     * "Identifies the controls being assessed. In the assessment plan, these are the planned controls. In the assessment results, these are the actual controls, and reflects any changes from the plan."
75     */
76    @BoundAssembly(
77        formalName = "Assessed Controls",
78        description = "Identifies the controls being assessed. In the assessment plan, these are the planned controls. In the assessment results, these are the actual controls, and reflects any changes from the plan.",
79        useName = "control-selection",
80        minOccurs = 1,
81        maxOccurs = -1,
82        remarks = "The `include-all`, specifies all control identified in the **baseline** are included in the scope if this assessment, as specified by the `include-profile` statement within the linked SSP.\n"
83                + "\n"
84                + "Any control specified within `exclude-controls` must first be within a range of explicitly included controls, via `include-controls` or `include-all`."
85    )
86    @GroupAs(
87        name = "control-selections",
88        inJson = JsonGroupAsBehavior.LIST
89    )
90    private List<ControlSelection> _controlSelections;
91  
92    /**
93     * "Identifies the control objectives of the assessment. In the assessment plan, these are the planned objectives. In the assessment results, these are the assessed objectives, and reflects any changes from the plan."
94     */
95    @BoundAssembly(
96        formalName = "Referenced Control Objectives",
97        description = "Identifies the control objectives of the assessment. In the assessment plan, these are the planned objectives. In the assessment results, these are the assessed objectives, and reflects any changes from the plan.",
98        useName = "control-objective-selection",
99        maxOccurs = -1,
100       remarks = "The `include-all` field, specifies all control objectives for any in-scope control. In-scope controls are defined in the `control-selection`.\n"
101               + "\n"
102               + "Any control objective specified within `exclude-controls` must first be within a range of explicitly included control objectives, via `include-objectives` or `include-all`."
103   )
104   @GroupAs(
105       name = "control-objective-selections",
106       inJson = JsonGroupAsBehavior.LIST
107   )
108   private List<ControlObjectiveSelection> _controlObjectiveSelections;
109 
110   @BoundField(
111       formalName = "Remarks",
112       description = "Additional commentary about the containing object.",
113       useName = "remarks"
114   )
115   @BoundFieldValue(
116       typeAdapter = MarkupMultilineAdapter.class
117   )
118   private MarkupMultiline _remarks;
119 
120   public ReviewedControls() {
121   }
122 
123   public MarkupMultiline getDescription() {
124     return _description;
125   }
126 
127   public void setDescription(MarkupMultiline value) {
128     _description = value;
129   }
130 
131   public List<Property> getProps() {
132     return _props;
133   }
134 
135   public void setProps(List<Property> value) {
136     _props = value;
137   }
138 
139   /**
140    * Add a new {@link Property} item to the underlying collection.
141    * @param item the item to add
142    * @return {@code true}
143    */
144   public boolean addProp(Property item) {
145     Property value = ObjectUtils.requireNonNull(item,"item cannot be null");
146     if (_props == null) {
147       _props = new LinkedList<>();
148     }
149     return _props.add(value);
150   }
151 
152   /**
153    * Remove the first matching {@link Property} item from the underlying collection.
154    * @param item the item to remove
155    * @return {@code true} if the item was removed or {@code false} otherwise
156    */
157   public boolean removeProp(Property item) {
158     Property value = ObjectUtils.requireNonNull(item,"item cannot be null");
159     return _props == null ? false : _props.remove(value);
160   }
161 
162   public List<Link> getLinks() {
163     return _links;
164   }
165 
166   public void setLinks(List<Link> value) {
167     _links = value;
168   }
169 
170   /**
171    * Add a new {@link Link} item to the underlying collection.
172    * @param item the item to add
173    * @return {@code true}
174    */
175   public boolean addLink(Link item) {
176     Link value = ObjectUtils.requireNonNull(item,"item cannot be null");
177     if (_links == null) {
178       _links = new LinkedList<>();
179     }
180     return _links.add(value);
181   }
182 
183   /**
184    * Remove the first matching {@link Link} item from the underlying collection.
185    * @param item the item to remove
186    * @return {@code true} if the item was removed or {@code false} otherwise
187    */
188   public boolean removeLink(Link item) {
189     Link value = ObjectUtils.requireNonNull(item,"item cannot be null");
190     return _links == null ? false : _links.remove(value);
191   }
192 
193   public List<ControlSelection> getControlSelections() {
194     return _controlSelections;
195   }
196 
197   public void setControlSelections(List<ControlSelection> value) {
198     _controlSelections = value;
199   }
200 
201   /**
202    * Add a new {@link ControlSelection} item to the underlying collection.
203    * @param item the item to add
204    * @return {@code true}
205    */
206   public boolean addControlSelection(ControlSelection item) {
207     ControlSelection value = ObjectUtils.requireNonNull(item,"item cannot be null");
208     if (_controlSelections == null) {
209       _controlSelections = new LinkedList<>();
210     }
211     return _controlSelections.add(value);
212   }
213 
214   /**
215    * Remove the first matching {@link ControlSelection} item from the underlying collection.
216    * @param item the item to remove
217    * @return {@code true} if the item was removed or {@code false} otherwise
218    */
219   public boolean removeControlSelection(ControlSelection item) {
220     ControlSelection value = ObjectUtils.requireNonNull(item,"item cannot be null");
221     return _controlSelections == null ? false : _controlSelections.remove(value);
222   }
223 
224   public List<ControlObjectiveSelection> getControlObjectiveSelections() {
225     return _controlObjectiveSelections;
226   }
227 
228   public void setControlObjectiveSelections(List<ControlObjectiveSelection> value) {
229     _controlObjectiveSelections = value;
230   }
231 
232   /**
233    * Add a new {@link ControlObjectiveSelection} item to the underlying collection.
234    * @param item the item to add
235    * @return {@code true}
236    */
237   public boolean addControlObjectiveSelection(ControlObjectiveSelection item) {
238     ControlObjectiveSelection value = ObjectUtils.requireNonNull(item,"item cannot be null");
239     if (_controlObjectiveSelections == null) {
240       _controlObjectiveSelections = new LinkedList<>();
241     }
242     return _controlObjectiveSelections.add(value);
243   }
244 
245   /**
246    * Remove the first matching {@link ControlObjectiveSelection} item from the underlying collection.
247    * @param item the item to remove
248    * @return {@code true} if the item was removed or {@code false} otherwise
249    */
250   public boolean removeControlObjectiveSelection(ControlObjectiveSelection item) {
251     ControlObjectiveSelection value = ObjectUtils.requireNonNull(item,"item cannot be null");
252     return _controlObjectiveSelections == null ? false : _controlObjectiveSelections.remove(value);
253   }
254 
255   public MarkupMultiline getRemarks() {
256     return _remarks;
257   }
258 
259   public void setRemarks(MarkupMultiline value) {
260     _remarks = value;
261   }
262 
263   @Override
264   public String toString() {
265     return new ReflectionToStringBuilder(this, MultilineRecursiveToStringStyle.MULTI_LINE_STYLE).toString();
266   }
267 
268   /**
269    * Identifies the controls being assessed. In the assessment plan, these are the planned controls. In the assessment results, these are the actual controls, and reflects any changes from the plan.
270    */
271   @MetaschemaAssembly(
272       formalName = "Assessed Controls",
273       description = "Identifies the controls being assessed. In the assessment plan, these are the planned controls. In the assessment results, these are the actual controls, and reflects any changes from the plan.",
274       name = "control-selection",
275       metaschema = OscalAssessmentCommonMetaschema.class,
276       remarks = "The `include-all`, specifies all control identified in the **baseline** are included in the scope if this assessment, as specified by the `include-profile` statement within the linked SSP.\n"
277               + "\n"
278               + "Any control specified within `exclude-controls` must first be within a range of explicitly included controls, via `include-controls` or `include-all`."
279   )
280   public static class ControlSelection {
281     /**
282      * "A human-readable description of in-scope controls specified for assessment."
283      */
284     @BoundField(
285         formalName = "Assessed Controls Description",
286         description = "A human-readable description of in-scope controls specified for assessment.",
287         useName = "description"
288     )
289     @BoundFieldValue(
290         typeAdapter = MarkupMultilineAdapter.class
291     )
292     private MarkupMultiline _description;
293 
294     @BoundAssembly(
295         formalName = "Property",
296         description = "An attribute, characteristic, or quality of the containing object expressed as a namespace qualified name/value pair.",
297         useName = "prop",
298         maxOccurs = -1
299     )
300     @GroupAs(
301         name = "props",
302         inJson = JsonGroupAsBehavior.LIST
303     )
304     private List<Property> _props;
305 
306     @BoundAssembly(
307         formalName = "Link",
308         description = "A reference to a local or remote resource, that has a specific relation to the containing object.",
309         useName = "link",
310         maxOccurs = -1
311     )
312     @GroupAs(
313         name = "links",
314         inJson = JsonGroupAsBehavior.LIST
315     )
316     private List<Link> _links;
317 
318     @BoundAssembly(
319         formalName = "Include All",
320         description = "Include all controls from the imported catalog or profile resources.",
321         useName = "include-all",
322         minOccurs = 1
323     )
324     private IncludeAll _includeAll;
325 
326     @BoundAssembly(
327         formalName = "Select Control",
328         description = "Used to select a control for inclusion/exclusion based on one or more control identifiers. A set of statement identifiers can be used to target the inclusion/exclusion to only specific control statements providing more granularity over the specific statements that are within the asessment scope.",
329         useName = "include-control",
330         minOccurs = 1,
331         maxOccurs = -1,
332         remarks = "Used to select a control for inclusion by the control's identifier. Specific control statements can be selected by their statement identifier."
333     )
334     @GroupAs(
335         name = "include-controls",
336         inJson = JsonGroupAsBehavior.LIST
337     )
338     private List<SelectControlById> _includeControls;
339 
340     @BoundAssembly(
341         formalName = "Select Control",
342         description = "Used to select a control for inclusion/exclusion based on one or more control identifiers. A set of statement identifiers can be used to target the inclusion/exclusion to only specific control statements providing more granularity over the specific statements that are within the asessment scope.",
343         useName = "exclude-control",
344         maxOccurs = -1,
345         remarks = "Used to select a control for exclusion by the control's identifier. Specific control statements can be excluded by their statement identifier."
346     )
347     @GroupAs(
348         name = "exclude-controls",
349         inJson = JsonGroupAsBehavior.LIST
350     )
351     private List<SelectControlById> _excludeControls;
352 
353     @BoundField(
354         formalName = "Remarks",
355         description = "Additional commentary about the containing object.",
356         useName = "remarks"
357     )
358     @BoundFieldValue(
359         typeAdapter = MarkupMultilineAdapter.class
360     )
361     private MarkupMultiline _remarks;
362 
363     public ControlSelection() {
364     }
365 
366     public MarkupMultiline getDescription() {
367       return _description;
368     }
369 
370     public void setDescription(MarkupMultiline value) {
371       _description = value;
372     }
373 
374     public List<Property> getProps() {
375       return _props;
376     }
377 
378     public void setProps(List<Property> value) {
379       _props = value;
380     }
381 
382     /**
383      * Add a new {@link Property} item to the underlying collection.
384      * @param item the item to add
385      * @return {@code true}
386      */
387     public boolean addProp(Property item) {
388       Property value = ObjectUtils.requireNonNull(item,"item cannot be null");
389       if (_props == null) {
390         _props = new LinkedList<>();
391       }
392       return _props.add(value);
393     }
394 
395     /**
396      * Remove the first matching {@link Property} item from the underlying collection.
397      * @param item the item to remove
398      * @return {@code true} if the item was removed or {@code false} otherwise
399      */
400     public boolean removeProp(Property item) {
401       Property value = ObjectUtils.requireNonNull(item,"item cannot be null");
402       return _props == null ? false : _props.remove(value);
403     }
404 
405     public List<Link> getLinks() {
406       return _links;
407     }
408 
409     public void setLinks(List<Link> value) {
410       _links = value;
411     }
412 
413     /**
414      * Add a new {@link Link} item to the underlying collection.
415      * @param item the item to add
416      * @return {@code true}
417      */
418     public boolean addLink(Link item) {
419       Link value = ObjectUtils.requireNonNull(item,"item cannot be null");
420       if (_links == null) {
421         _links = new LinkedList<>();
422       }
423       return _links.add(value);
424     }
425 
426     /**
427      * Remove the first matching {@link Link} item from the underlying collection.
428      * @param item the item to remove
429      * @return {@code true} if the item was removed or {@code false} otherwise
430      */
431     public boolean removeLink(Link item) {
432       Link value = ObjectUtils.requireNonNull(item,"item cannot be null");
433       return _links == null ? false : _links.remove(value);
434     }
435 
436     public IncludeAll getIncludeAll() {
437       return _includeAll;
438     }
439 
440     public void setIncludeAll(IncludeAll value) {
441       _includeAll = value;
442     }
443 
444     public List<SelectControlById> getIncludeControls() {
445       return _includeControls;
446     }
447 
448     public void setIncludeControls(List<SelectControlById> value) {
449       _includeControls = value;
450     }
451 
452     /**
453      * Add a new {@link SelectControlById} item to the underlying collection.
454      * @param item the item to add
455      * @return {@code true}
456      */
457     public boolean addIncludeControl(SelectControlById item) {
458       SelectControlById value = ObjectUtils.requireNonNull(item,"item cannot be null");
459       if (_includeControls == null) {
460         _includeControls = new LinkedList<>();
461       }
462       return _includeControls.add(value);
463     }
464 
465     /**
466      * Remove the first matching {@link SelectControlById} item from the underlying collection.
467      * @param item the item to remove
468      * @return {@code true} if the item was removed or {@code false} otherwise
469      */
470     public boolean removeIncludeControl(SelectControlById item) {
471       SelectControlById value = ObjectUtils.requireNonNull(item,"item cannot be null");
472       return _includeControls == null ? false : _includeControls.remove(value);
473     }
474 
475     public List<SelectControlById> getExcludeControls() {
476       return _excludeControls;
477     }
478 
479     public void setExcludeControls(List<SelectControlById> value) {
480       _excludeControls = value;
481     }
482 
483     /**
484      * Add a new {@link SelectControlById} item to the underlying collection.
485      * @param item the item to add
486      * @return {@code true}
487      */
488     public boolean addExcludeControl(SelectControlById item) {
489       SelectControlById value = ObjectUtils.requireNonNull(item,"item cannot be null");
490       if (_excludeControls == null) {
491         _excludeControls = new LinkedList<>();
492       }
493       return _excludeControls.add(value);
494     }
495 
496     /**
497      * Remove the first matching {@link SelectControlById} item from the underlying collection.
498      * @param item the item to remove
499      * @return {@code true} if the item was removed or {@code false} otherwise
500      */
501     public boolean removeExcludeControl(SelectControlById item) {
502       SelectControlById value = ObjectUtils.requireNonNull(item,"item cannot be null");
503       return _excludeControls == null ? false : _excludeControls.remove(value);
504     }
505 
506     public MarkupMultiline getRemarks() {
507       return _remarks;
508     }
509 
510     public void setRemarks(MarkupMultiline value) {
511       _remarks = value;
512     }
513 
514     @Override
515     public String toString() {
516       return new ReflectionToStringBuilder(this, MultilineRecursiveToStringStyle.MULTI_LINE_STYLE).toString();
517     }
518   }
519 
520   /**
521    * Identifies the control objectives of the assessment. In the assessment plan, these are the planned objectives. In the assessment results, these are the assessed objectives, and reflects any changes from the plan.
522    */
523   @MetaschemaAssembly(
524       formalName = "Referenced Control Objectives",
525       description = "Identifies the control objectives of the assessment. In the assessment plan, these are the planned objectives. In the assessment results, these are the assessed objectives, and reflects any changes from the plan.",
526       name = "control-objective-selection",
527       metaschema = OscalAssessmentCommonMetaschema.class,
528       remarks = "The `include-all` field, specifies all control objectives for any in-scope control. In-scope controls are defined in the `control-selection`.\n"
529               + "\n"
530               + "Any control objective specified within `exclude-controls` must first be within a range of explicitly included control objectives, via `include-objectives` or `include-all`."
531   )
532   public static class ControlObjectiveSelection {
533     /**
534      * "A human-readable description of this collection of control objectives."
535      */
536     @BoundField(
537         formalName = "Control Objectives Description",
538         description = "A human-readable description of this collection of control objectives.",
539         useName = "description"
540     )
541     @BoundFieldValue(
542         typeAdapter = MarkupMultilineAdapter.class
543     )
544     private MarkupMultiline _description;
545 
546     @BoundAssembly(
547         formalName = "Property",
548         description = "An attribute, characteristic, or quality of the containing object expressed as a namespace qualified name/value pair.",
549         useName = "prop",
550         maxOccurs = -1
551     )
552     @GroupAs(
553         name = "props",
554         inJson = JsonGroupAsBehavior.LIST
555     )
556     private List<Property> _props;
557 
558     @BoundAssembly(
559         formalName = "Link",
560         description = "A reference to a local or remote resource, that has a specific relation to the containing object.",
561         useName = "link",
562         maxOccurs = -1
563     )
564     @GroupAs(
565         name = "links",
566         inJson = JsonGroupAsBehavior.LIST
567     )
568     private List<Link> _links;
569 
570     @BoundAssembly(
571         formalName = "Include All",
572         description = "Include all controls from the imported catalog or profile resources.",
573         useName = "include-all",
574         minOccurs = 1
575     )
576     private IncludeAll _includeAll;
577 
578     @BoundAssembly(
579         formalName = "Select Objective",
580         description = "Used to select a control objective for inclusion/exclusion based on the control objective's identifier.",
581         useName = "include-objective",
582         minOccurs = 1,
583         maxOccurs = -1,
584         remarks = "Used to select a control objective for inclusion by the control objective's identifier."
585     )
586     @GroupAs(
587         name = "include-objectives",
588         inJson = JsonGroupAsBehavior.LIST
589     )
590     private List<SelectObjectiveById> _includeObjectives;
591 
592     @BoundAssembly(
593         formalName = "Select Objective",
594         description = "Used to select a control objective for inclusion/exclusion based on the control objective's identifier.",
595         useName = "exclude-objective",
596         maxOccurs = -1,
597         remarks = "Used to select a control objective for exclusion by the control objective's identifier."
598     )
599     @GroupAs(
600         name = "exclude-objectives",
601         inJson = JsonGroupAsBehavior.LIST
602     )
603     private List<SelectObjectiveById> _excludeObjectives;
604 
605     @BoundField(
606         formalName = "Remarks",
607         description = "Additional commentary about the containing object.",
608         useName = "remarks"
609     )
610     @BoundFieldValue(
611         typeAdapter = MarkupMultilineAdapter.class
612     )
613     private MarkupMultiline _remarks;
614 
615     public ControlObjectiveSelection() {
616     }
617 
618     public MarkupMultiline getDescription() {
619       return _description;
620     }
621 
622     public void setDescription(MarkupMultiline value) {
623       _description = value;
624     }
625 
626     public List<Property> getProps() {
627       return _props;
628     }
629 
630     public void setProps(List<Property> value) {
631       _props = value;
632     }
633 
634     /**
635      * Add a new {@link Property} item to the underlying collection.
636      * @param item the item to add
637      * @return {@code true}
638      */
639     public boolean addProp(Property item) {
640       Property value = ObjectUtils.requireNonNull(item,"item cannot be null");
641       if (_props == null) {
642         _props = new LinkedList<>();
643       }
644       return _props.add(value);
645     }
646 
647     /**
648      * Remove the first matching {@link Property} item from the underlying collection.
649      * @param item the item to remove
650      * @return {@code true} if the item was removed or {@code false} otherwise
651      */
652     public boolean removeProp(Property item) {
653       Property value = ObjectUtils.requireNonNull(item,"item cannot be null");
654       return _props == null ? false : _props.remove(value);
655     }
656 
657     public List<Link> getLinks() {
658       return _links;
659     }
660 
661     public void setLinks(List<Link> value) {
662       _links = value;
663     }
664 
665     /**
666      * Add a new {@link Link} item to the underlying collection.
667      * @param item the item to add
668      * @return {@code true}
669      */
670     public boolean addLink(Link item) {
671       Link value = ObjectUtils.requireNonNull(item,"item cannot be null");
672       if (_links == null) {
673         _links = new LinkedList<>();
674       }
675       return _links.add(value);
676     }
677 
678     /**
679      * Remove the first matching {@link Link} item from the underlying collection.
680      * @param item the item to remove
681      * @return {@code true} if the item was removed or {@code false} otherwise
682      */
683     public boolean removeLink(Link item) {
684       Link value = ObjectUtils.requireNonNull(item,"item cannot be null");
685       return _links == null ? false : _links.remove(value);
686     }
687 
688     public IncludeAll getIncludeAll() {
689       return _includeAll;
690     }
691 
692     public void setIncludeAll(IncludeAll value) {
693       _includeAll = value;
694     }
695 
696     public List<SelectObjectiveById> getIncludeObjectives() {
697       return _includeObjectives;
698     }
699 
700     public void setIncludeObjectives(List<SelectObjectiveById> value) {
701       _includeObjectives = value;
702     }
703 
704     /**
705      * Add a new {@link SelectObjectiveById} item to the underlying collection.
706      * @param item the item to add
707      * @return {@code true}
708      */
709     public boolean addIncludeObjective(SelectObjectiveById item) {
710       SelectObjectiveById value = ObjectUtils.requireNonNull(item,"item cannot be null");
711       if (_includeObjectives == null) {
712         _includeObjectives = new LinkedList<>();
713       }
714       return _includeObjectives.add(value);
715     }
716 
717     /**
718      * Remove the first matching {@link SelectObjectiveById} item from the underlying collection.
719      * @param item the item to remove
720      * @return {@code true} if the item was removed or {@code false} otherwise
721      */
722     public boolean removeIncludeObjective(SelectObjectiveById item) {
723       SelectObjectiveById value = ObjectUtils.requireNonNull(item,"item cannot be null");
724       return _includeObjectives == null ? false : _includeObjectives.remove(value);
725     }
726 
727     public List<SelectObjectiveById> getExcludeObjectives() {
728       return _excludeObjectives;
729     }
730 
731     public void setExcludeObjectives(List<SelectObjectiveById> value) {
732       _excludeObjectives = value;
733     }
734 
735     /**
736      * Add a new {@link SelectObjectiveById} item to the underlying collection.
737      * @param item the item to add
738      * @return {@code true}
739      */
740     public boolean addExcludeObjective(SelectObjectiveById item) {
741       SelectObjectiveById value = ObjectUtils.requireNonNull(item,"item cannot be null");
742       if (_excludeObjectives == null) {
743         _excludeObjectives = new LinkedList<>();
744       }
745       return _excludeObjectives.add(value);
746     }
747 
748     /**
749      * Remove the first matching {@link SelectObjectiveById} item from the underlying collection.
750      * @param item the item to remove
751      * @return {@code true} if the item was removed or {@code false} otherwise
752      */
753     public boolean removeExcludeObjective(SelectObjectiveById item) {
754       SelectObjectiveById value = ObjectUtils.requireNonNull(item,"item cannot be null");
755       return _excludeObjectives == null ? false : _excludeObjectives.remove(value);
756     }
757 
758     public MarkupMultiline getRemarks() {
759       return _remarks;
760     }
761 
762     public void setRemarks(MarkupMultiline value) {
763       _remarks = value;
764     }
765 
766     @Override
767     public String toString() {
768       return new ReflectionToStringBuilder(this, MultilineRecursiveToStringStyle.MULTI_LINE_STYLE).toString();
769     }
770   }
771 }