001package gov.nist.secauto.oscal.lib.model; 002 003import gov.nist.secauto.metaschema.core.datatype.markup.MarkupMultiline; 004import gov.nist.secauto.metaschema.core.datatype.markup.MarkupMultilineAdapter; 005import gov.nist.secauto.metaschema.core.model.IBoundObject; 006import gov.nist.secauto.metaschema.core.model.IMetaschemaData; 007import gov.nist.secauto.metaschema.core.model.JsonGroupAsBehavior; 008import gov.nist.secauto.metaschema.core.util.ObjectUtils; 009import gov.nist.secauto.metaschema.databind.model.annotations.BoundAssembly; 010import gov.nist.secauto.metaschema.databind.model.annotations.BoundField; 011import gov.nist.secauto.metaschema.databind.model.annotations.GroupAs; 012import gov.nist.secauto.metaschema.databind.model.annotations.MetaschemaAssembly; 013import java.lang.Override; 014import java.lang.String; 015import java.util.LinkedList; 016import java.util.List; 017import org.apache.commons.lang3.builder.ReflectionToStringBuilder; 018import org.apache.commons.lang3.builder.ToStringStyle; 019 020/** 021 * Identifies the controls being assessed and their control objectives. 022 */ 023@MetaschemaAssembly( 024 formalName = "Reviewed Controls and Control Objectives", 025 description = "Identifies the controls being assessed and their control objectives.", 026 name = "reviewed-controls", 027 moduleClass = OscalAssessmentCommonModule.class, 028 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" 029 + "\n" 030 + "When resolving the selection of controls and control objectives, the following processing will occur:\n" 031 + "\n" 032 + "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" 033 + "\n" 034 + "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." 035) 036public class ReviewedControls implements IBoundObject { 037 private final IMetaschemaData __metaschemaData; 038 039 @BoundField( 040 formalName = "Control Objective Description", 041 description = "A human-readable description of control objectives.", 042 useName = "description", 043 typeAdapter = MarkupMultilineAdapter.class 044 ) 045 private MarkupMultiline _description; 046 047 @BoundAssembly( 048 formalName = "Property", 049 description = "An attribute, characteristic, or quality of the containing object expressed as a namespace qualified name/value pair.", 050 useName = "prop", 051 maxOccurs = -1, 052 groupAs = @GroupAs(name = "props", inJson = JsonGroupAsBehavior.LIST) 053 ) 054 private List<Property> _props; 055 056 @BoundAssembly( 057 formalName = "Link", 058 description = "A reference to a local or remote resource, that has a specific relation to the containing object.", 059 useName = "link", 060 maxOccurs = -1, 061 groupAs = @GroupAs(name = "links", inJson = JsonGroupAsBehavior.LIST) 062 ) 063 private List<Link> _links; 064 065 @BoundAssembly( 066 formalName = "Assessed Controls", 067 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.", 068 useName = "control-selection", 069 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" 070 + "\n" 071 + "Any control specified within `exclude-controls` must first be within a range of explicitly included controls, via `include-controls` or `include-all`.", 072 minOccurs = 1, 073 maxOccurs = -1, 074 groupAs = @GroupAs(name = "control-selections", inJson = JsonGroupAsBehavior.LIST) 075 ) 076 private List<ControlSelection> _controlSelections; 077 078 @BoundAssembly( 079 formalName = "Referenced Control Objectives", 080 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.", 081 useName = "control-objective-selection", 082 remarks = "The `include-all` field, specifies all control objectives for any in-scope control. In-scope controls are defined in the `control-selection`.\n" 083 + "\n" 084 + "Any control objective specified within `exclude-controls` must first be within a range of explicitly included control objectives, via `include-objectives` or `include-all`.", 085 maxOccurs = -1, 086 groupAs = @GroupAs(name = "control-objective-selections", inJson = JsonGroupAsBehavior.LIST) 087 ) 088 private List<ControlObjectiveSelection> _controlObjectiveSelections; 089 090 @BoundField( 091 formalName = "Remarks", 092 description = "Additional commentary about the containing object.", 093 useName = "remarks", 094 typeAdapter = MarkupMultilineAdapter.class 095 ) 096 private MarkupMultiline _remarks; 097 098 public ReviewedControls() { 099 this(null); 100 } 101 102 public ReviewedControls(IMetaschemaData data) { 103 this.__metaschemaData = data; 104 } 105 106 @Override 107 public IMetaschemaData getMetaschemaData() { 108 return __metaschemaData; 109 } 110 111 public MarkupMultiline getDescription() { 112 return _description; 113 } 114 115 public void setDescription(MarkupMultiline value) { 116 _description = value; 117 } 118 119 public List<Property> getProps() { 120 return _props; 121 } 122 123 public void setProps(List<Property> value) { 124 _props = value; 125 } 126 127 /** 128 * Add a new {@link Property} item to the underlying collection. 129 * @param item the item to add 130 * @return {@code true} 131 */ 132 public boolean addProp(Property item) { 133 Property value = ObjectUtils.requireNonNull(item,"item cannot be null"); 134 if (_props == null) { 135 _props = new LinkedList<>(); 136 } 137 return _props.add(value); 138 } 139 140 /** 141 * Remove the first matching {@link Property} item from the underlying collection. 142 * @param item the item to remove 143 * @return {@code true} if the item was removed or {@code false} otherwise 144 */ 145 public boolean removeProp(Property item) { 146 Property value = ObjectUtils.requireNonNull(item,"item cannot be null"); 147 return _props != null && _props.remove(value); 148 } 149 150 public List<Link> getLinks() { 151 return _links; 152 } 153 154 public void setLinks(List<Link> value) { 155 _links = value; 156 } 157 158 /** 159 * Add a new {@link Link} item to the underlying collection. 160 * @param item the item to add 161 * @return {@code true} 162 */ 163 public boolean addLink(Link item) { 164 Link value = ObjectUtils.requireNonNull(item,"item cannot be null"); 165 if (_links == null) { 166 _links = new LinkedList<>(); 167 } 168 return _links.add(value); 169 } 170 171 /** 172 * Remove the first matching {@link Link} item from the underlying collection. 173 * @param item the item to remove 174 * @return {@code true} if the item was removed or {@code false} otherwise 175 */ 176 public boolean removeLink(Link item) { 177 Link value = ObjectUtils.requireNonNull(item,"item cannot be null"); 178 return _links != null && _links.remove(value); 179 } 180 181 public List<ControlSelection> getControlSelections() { 182 return _controlSelections; 183 } 184 185 public void setControlSelections(List<ControlSelection> value) { 186 _controlSelections = value; 187 } 188 189 /** 190 * Add a new {@link ControlSelection} item to the underlying collection. 191 * @param item the item to add 192 * @return {@code true} 193 */ 194 public boolean addControlSelection(ControlSelection item) { 195 ControlSelection value = ObjectUtils.requireNonNull(item,"item cannot be null"); 196 if (_controlSelections == null) { 197 _controlSelections = new LinkedList<>(); 198 } 199 return _controlSelections.add(value); 200 } 201 202 /** 203 * Remove the first matching {@link ControlSelection} item from the underlying collection. 204 * @param item the item to remove 205 * @return {@code true} if the item was removed or {@code false} otherwise 206 */ 207 public boolean removeControlSelection(ControlSelection item) { 208 ControlSelection value = ObjectUtils.requireNonNull(item,"item cannot be null"); 209 return _controlSelections != null && _controlSelections.remove(value); 210 } 211 212 public List<ControlObjectiveSelection> getControlObjectiveSelections() { 213 return _controlObjectiveSelections; 214 } 215 216 public void setControlObjectiveSelections(List<ControlObjectiveSelection> value) { 217 _controlObjectiveSelections = value; 218 } 219 220 /** 221 * Add a new {@link ControlObjectiveSelection} item to the underlying collection. 222 * @param item the item to add 223 * @return {@code true} 224 */ 225 public boolean addControlObjectiveSelection(ControlObjectiveSelection item) { 226 ControlObjectiveSelection value = ObjectUtils.requireNonNull(item,"item cannot be null"); 227 if (_controlObjectiveSelections == null) { 228 _controlObjectiveSelections = new LinkedList<>(); 229 } 230 return _controlObjectiveSelections.add(value); 231 } 232 233 /** 234 * Remove the first matching {@link ControlObjectiveSelection} item from the underlying collection. 235 * @param item the item to remove 236 * @return {@code true} if the item was removed or {@code false} otherwise 237 */ 238 public boolean removeControlObjectiveSelection(ControlObjectiveSelection item) { 239 ControlObjectiveSelection value = ObjectUtils.requireNonNull(item,"item cannot be null"); 240 return _controlObjectiveSelections != null && _controlObjectiveSelections.remove(value); 241 } 242 243 public MarkupMultiline getRemarks() { 244 return _remarks; 245 } 246 247 public void setRemarks(MarkupMultiline value) { 248 _remarks = value; 249 } 250 251 @Override 252 public String toString() { 253 return new ReflectionToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE).toString(); 254 } 255 256 /** 257 * 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. 258 */ 259 @MetaschemaAssembly( 260 formalName = "Assessed Controls", 261 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.", 262 name = "control-selection", 263 moduleClass = OscalAssessmentCommonModule.class, 264 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" 265 + "\n" 266 + "Any control specified within `exclude-controls` must first be within a range of explicitly included controls, via `include-controls` or `include-all`." 267 ) 268 public static class ControlSelection implements IBoundObject { 269 private final IMetaschemaData __metaschemaData; 270 271 @BoundField( 272 formalName = "Assessed Controls Description", 273 description = "A human-readable description of in-scope controls specified for assessment.", 274 useName = "description", 275 typeAdapter = MarkupMultilineAdapter.class 276 ) 277 private MarkupMultiline _description; 278 279 @BoundAssembly( 280 formalName = "Property", 281 description = "An attribute, characteristic, or quality of the containing object expressed as a namespace qualified name/value pair.", 282 useName = "prop", 283 maxOccurs = -1, 284 groupAs = @GroupAs(name = "props", inJson = JsonGroupAsBehavior.LIST) 285 ) 286 private List<Property> _props; 287 288 @BoundAssembly( 289 formalName = "Link", 290 description = "A reference to a local or remote resource, that has a specific relation to the containing object.", 291 useName = "link", 292 maxOccurs = -1, 293 groupAs = @GroupAs(name = "links", inJson = JsonGroupAsBehavior.LIST) 294 ) 295 private List<Link> _links; 296 297 @BoundAssembly( 298 formalName = "Include All", 299 description = "Include all controls from the imported catalog or profile resources.", 300 useName = "include-all", 301 minOccurs = 1 302 ) 303 private IncludeAll _includeAll; 304 305 @BoundAssembly( 306 formalName = "Select Control", 307 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.", 308 useName = "include-control", 309 remarks = "Used to select a control for inclusion by the control's identifier. Specific control statements can be selected by their statement identifier.", 310 minOccurs = 1, 311 maxOccurs = -1, 312 groupAs = @GroupAs(name = "include-controls", inJson = JsonGroupAsBehavior.LIST) 313 ) 314 private List<SelectControlById> _includeControls; 315 316 @BoundAssembly( 317 formalName = "Select Control", 318 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.", 319 useName = "exclude-control", 320 remarks = "Used to select a control for exclusion by the control's identifier. Specific control statements can be excluded by their statement identifier.", 321 maxOccurs = -1, 322 groupAs = @GroupAs(name = "exclude-controls", inJson = JsonGroupAsBehavior.LIST) 323 ) 324 private List<SelectControlById> _excludeControls; 325 326 @BoundField( 327 formalName = "Remarks", 328 description = "Additional commentary about the containing object.", 329 useName = "remarks", 330 typeAdapter = MarkupMultilineAdapter.class 331 ) 332 private MarkupMultiline _remarks; 333 334 public ControlSelection() { 335 this(null); 336 } 337 338 public ControlSelection(IMetaschemaData data) { 339 this.__metaschemaData = data; 340 } 341 342 @Override 343 public IMetaschemaData getMetaschemaData() { 344 return __metaschemaData; 345 } 346 347 public MarkupMultiline getDescription() { 348 return _description; 349 } 350 351 public void setDescription(MarkupMultiline value) { 352 _description = value; 353 } 354 355 public List<Property> getProps() { 356 return _props; 357 } 358 359 public void setProps(List<Property> value) { 360 _props = value; 361 } 362 363 /** 364 * Add a new {@link Property} item to the underlying collection. 365 * @param item the item to add 366 * @return {@code true} 367 */ 368 public boolean addProp(Property item) { 369 Property value = ObjectUtils.requireNonNull(item,"item cannot be null"); 370 if (_props == null) { 371 _props = new LinkedList<>(); 372 } 373 return _props.add(value); 374 } 375 376 /** 377 * Remove the first matching {@link Property} item from the underlying collection. 378 * @param item the item to remove 379 * @return {@code true} if the item was removed or {@code false} otherwise 380 */ 381 public boolean removeProp(Property item) { 382 Property value = ObjectUtils.requireNonNull(item,"item cannot be null"); 383 return _props != null && _props.remove(value); 384 } 385 386 public List<Link> getLinks() { 387 return _links; 388 } 389 390 public void setLinks(List<Link> value) { 391 _links = value; 392 } 393 394 /** 395 * Add a new {@link Link} item to the underlying collection. 396 * @param item the item to add 397 * @return {@code true} 398 */ 399 public boolean addLink(Link item) { 400 Link value = ObjectUtils.requireNonNull(item,"item cannot be null"); 401 if (_links == null) { 402 _links = new LinkedList<>(); 403 } 404 return _links.add(value); 405 } 406 407 /** 408 * Remove the first matching {@link Link} item from the underlying collection. 409 * @param item the item to remove 410 * @return {@code true} if the item was removed or {@code false} otherwise 411 */ 412 public boolean removeLink(Link item) { 413 Link value = ObjectUtils.requireNonNull(item,"item cannot be null"); 414 return _links != null && _links.remove(value); 415 } 416 417 public IncludeAll getIncludeAll() { 418 return _includeAll; 419 } 420 421 public void setIncludeAll(IncludeAll value) { 422 _includeAll = value; 423 } 424 425 public List<SelectControlById> getIncludeControls() { 426 return _includeControls; 427 } 428 429 public void setIncludeControls(List<SelectControlById> value) { 430 _includeControls = value; 431 } 432 433 /** 434 * Add a new {@link SelectControlById} item to the underlying collection. 435 * @param item the item to add 436 * @return {@code true} 437 */ 438 public boolean addIncludeControl(SelectControlById item) { 439 SelectControlById value = ObjectUtils.requireNonNull(item,"item cannot be null"); 440 if (_includeControls == null) { 441 _includeControls = new LinkedList<>(); 442 } 443 return _includeControls.add(value); 444 } 445 446 /** 447 * Remove the first matching {@link SelectControlById} item from the underlying collection. 448 * @param item the item to remove 449 * @return {@code true} if the item was removed or {@code false} otherwise 450 */ 451 public boolean removeIncludeControl(SelectControlById item) { 452 SelectControlById value = ObjectUtils.requireNonNull(item,"item cannot be null"); 453 return _includeControls != null && _includeControls.remove(value); 454 } 455 456 public List<SelectControlById> getExcludeControls() { 457 return _excludeControls; 458 } 459 460 public void setExcludeControls(List<SelectControlById> value) { 461 _excludeControls = value; 462 } 463 464 /** 465 * Add a new {@link SelectControlById} item to the underlying collection. 466 * @param item the item to add 467 * @return {@code true} 468 */ 469 public boolean addExcludeControl(SelectControlById item) { 470 SelectControlById value = ObjectUtils.requireNonNull(item,"item cannot be null"); 471 if (_excludeControls == null) { 472 _excludeControls = new LinkedList<>(); 473 } 474 return _excludeControls.add(value); 475 } 476 477 /** 478 * Remove the first matching {@link SelectControlById} item from the underlying collection. 479 * @param item the item to remove 480 * @return {@code true} if the item was removed or {@code false} otherwise 481 */ 482 public boolean removeExcludeControl(SelectControlById item) { 483 SelectControlById value = ObjectUtils.requireNonNull(item,"item cannot be null"); 484 return _excludeControls != null && _excludeControls.remove(value); 485 } 486 487 public MarkupMultiline getRemarks() { 488 return _remarks; 489 } 490 491 public void setRemarks(MarkupMultiline value) { 492 _remarks = value; 493 } 494 495 @Override 496 public String toString() { 497 return new ReflectionToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE).toString(); 498 } 499 } 500 501 /** 502 * 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. 503 */ 504 @MetaschemaAssembly( 505 formalName = "Referenced Control Objectives", 506 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.", 507 name = "control-objective-selection", 508 moduleClass = OscalAssessmentCommonModule.class, 509 remarks = "The `include-all` field, specifies all control objectives for any in-scope control. In-scope controls are defined in the `control-selection`.\n" 510 + "\n" 511 + "Any control objective specified within `exclude-controls` must first be within a range of explicitly included control objectives, via `include-objectives` or `include-all`." 512 ) 513 public static class ControlObjectiveSelection implements IBoundObject { 514 private final IMetaschemaData __metaschemaData; 515 516 @BoundField( 517 formalName = "Control Objectives Description", 518 description = "A human-readable description of this collection of control objectives.", 519 useName = "description", 520 typeAdapter = MarkupMultilineAdapter.class 521 ) 522 private MarkupMultiline _description; 523 524 @BoundAssembly( 525 formalName = "Property", 526 description = "An attribute, characteristic, or quality of the containing object expressed as a namespace qualified name/value pair.", 527 useName = "prop", 528 maxOccurs = -1, 529 groupAs = @GroupAs(name = "props", inJson = JsonGroupAsBehavior.LIST) 530 ) 531 private List<Property> _props; 532 533 @BoundAssembly( 534 formalName = "Link", 535 description = "A reference to a local or remote resource, that has a specific relation to the containing object.", 536 useName = "link", 537 maxOccurs = -1, 538 groupAs = @GroupAs(name = "links", inJson = JsonGroupAsBehavior.LIST) 539 ) 540 private List<Link> _links; 541 542 @BoundAssembly( 543 formalName = "Include All", 544 description = "Include all controls from the imported catalog or profile resources.", 545 useName = "include-all", 546 minOccurs = 1 547 ) 548 private IncludeAll _includeAll; 549 550 @BoundAssembly( 551 formalName = "Select Objective", 552 description = "Used to select a control objective for inclusion/exclusion based on the control objective's identifier.", 553 useName = "include-objective", 554 remarks = "Used to select a control objective for inclusion by the control objective's identifier.", 555 minOccurs = 1, 556 maxOccurs = -1, 557 groupAs = @GroupAs(name = "include-objectives", inJson = JsonGroupAsBehavior.LIST) 558 ) 559 private List<SelectObjectiveById> _includeObjectives; 560 561 @BoundAssembly( 562 formalName = "Select Objective", 563 description = "Used to select a control objective for inclusion/exclusion based on the control objective's identifier.", 564 useName = "exclude-objective", 565 remarks = "Used to select a control objective for exclusion by the control objective's identifier.", 566 maxOccurs = -1, 567 groupAs = @GroupAs(name = "exclude-objectives", inJson = JsonGroupAsBehavior.LIST) 568 ) 569 private List<SelectObjectiveById> _excludeObjectives; 570 571 @BoundField( 572 formalName = "Remarks", 573 description = "Additional commentary about the containing object.", 574 useName = "remarks", 575 typeAdapter = MarkupMultilineAdapter.class 576 ) 577 private MarkupMultiline _remarks; 578 579 public ControlObjectiveSelection() { 580 this(null); 581 } 582 583 public ControlObjectiveSelection(IMetaschemaData data) { 584 this.__metaschemaData = data; 585 } 586 587 @Override 588 public IMetaschemaData getMetaschemaData() { 589 return __metaschemaData; 590 } 591 592 public MarkupMultiline getDescription() { 593 return _description; 594 } 595 596 public void setDescription(MarkupMultiline value) { 597 _description = value; 598 } 599 600 public List<Property> getProps() { 601 return _props; 602 } 603 604 public void setProps(List<Property> value) { 605 _props = value; 606 } 607 608 /** 609 * Add a new {@link Property} item to the underlying collection. 610 * @param item the item to add 611 * @return {@code true} 612 */ 613 public boolean addProp(Property item) { 614 Property value = ObjectUtils.requireNonNull(item,"item cannot be null"); 615 if (_props == null) { 616 _props = new LinkedList<>(); 617 } 618 return _props.add(value); 619 } 620 621 /** 622 * Remove the first matching {@link Property} item from the underlying collection. 623 * @param item the item to remove 624 * @return {@code true} if the item was removed or {@code false} otherwise 625 */ 626 public boolean removeProp(Property item) { 627 Property value = ObjectUtils.requireNonNull(item,"item cannot be null"); 628 return _props != null && _props.remove(value); 629 } 630 631 public List<Link> getLinks() { 632 return _links; 633 } 634 635 public void setLinks(List<Link> value) { 636 _links = value; 637 } 638 639 /** 640 * Add a new {@link Link} item to the underlying collection. 641 * @param item the item to add 642 * @return {@code true} 643 */ 644 public boolean addLink(Link item) { 645 Link value = ObjectUtils.requireNonNull(item,"item cannot be null"); 646 if (_links == null) { 647 _links = new LinkedList<>(); 648 } 649 return _links.add(value); 650 } 651 652 /** 653 * Remove the first matching {@link Link} item from the underlying collection. 654 * @param item the item to remove 655 * @return {@code true} if the item was removed or {@code false} otherwise 656 */ 657 public boolean removeLink(Link item) { 658 Link value = ObjectUtils.requireNonNull(item,"item cannot be null"); 659 return _links != null && _links.remove(value); 660 } 661 662 public IncludeAll getIncludeAll() { 663 return _includeAll; 664 } 665 666 public void setIncludeAll(IncludeAll value) { 667 _includeAll = value; 668 } 669 670 public List<SelectObjectiveById> getIncludeObjectives() { 671 return _includeObjectives; 672 } 673 674 public void setIncludeObjectives(List<SelectObjectiveById> value) { 675 _includeObjectives = value; 676 } 677 678 /** 679 * Add a new {@link SelectObjectiveById} item to the underlying collection. 680 * @param item the item to add 681 * @return {@code true} 682 */ 683 public boolean addIncludeObjective(SelectObjectiveById item) { 684 SelectObjectiveById value = ObjectUtils.requireNonNull(item,"item cannot be null"); 685 if (_includeObjectives == null) { 686 _includeObjectives = new LinkedList<>(); 687 } 688 return _includeObjectives.add(value); 689 } 690 691 /** 692 * Remove the first matching {@link SelectObjectiveById} item from the underlying collection. 693 * @param item the item to remove 694 * @return {@code true} if the item was removed or {@code false} otherwise 695 */ 696 public boolean removeIncludeObjective(SelectObjectiveById item) { 697 SelectObjectiveById value = ObjectUtils.requireNonNull(item,"item cannot be null"); 698 return _includeObjectives != null && _includeObjectives.remove(value); 699 } 700 701 public List<SelectObjectiveById> getExcludeObjectives() { 702 return _excludeObjectives; 703 } 704 705 public void setExcludeObjectives(List<SelectObjectiveById> value) { 706 _excludeObjectives = value; 707 } 708 709 /** 710 * Add a new {@link SelectObjectiveById} item to the underlying collection. 711 * @param item the item to add 712 * @return {@code true} 713 */ 714 public boolean addExcludeObjective(SelectObjectiveById item) { 715 SelectObjectiveById value = ObjectUtils.requireNonNull(item,"item cannot be null"); 716 if (_excludeObjectives == null) { 717 _excludeObjectives = new LinkedList<>(); 718 } 719 return _excludeObjectives.add(value); 720 } 721 722 /** 723 * Remove the first matching {@link SelectObjectiveById} item from the underlying collection. 724 * @param item the item to remove 725 * @return {@code true} if the item was removed or {@code false} otherwise 726 */ 727 public boolean removeExcludeObjective(SelectObjectiveById item) { 728 SelectObjectiveById value = ObjectUtils.requireNonNull(item,"item cannot be null"); 729 return _excludeObjectives != null && _excludeObjectives.remove(value); 730 } 731 732 public MarkupMultiline getRemarks() { 733 return _remarks; 734 } 735 736 public void setRemarks(MarkupMultiline value) { 737 _remarks = value; 738 } 739 740 @Override 741 public String toString() { 742 return new ReflectionToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE).toString(); 743 } 744 } 745}