1 package gov.nist.secauto.oscal.lib.model;
2
3 import gov.nist.secauto.metaschema.binding.model.annotations.AllowedValue;
4 import gov.nist.secauto.metaschema.binding.model.annotations.AllowedValues;
5 import gov.nist.secauto.metaschema.binding.model.annotations.AssemblyConstraints;
6 import gov.nist.secauto.metaschema.binding.model.annotations.BoundAssembly;
7 import gov.nist.secauto.metaschema.binding.model.annotations.BoundField;
8 import gov.nist.secauto.metaschema.binding.model.annotations.BoundFieldValue;
9 import gov.nist.secauto.metaschema.binding.model.annotations.BoundFlag;
10 import gov.nist.secauto.metaschema.binding.model.annotations.GroupAs;
11 import gov.nist.secauto.metaschema.binding.model.annotations.IsUnique;
12 import gov.nist.secauto.metaschema.binding.model.annotations.KeyField;
13 import gov.nist.secauto.metaschema.binding.model.annotations.MetaschemaAssembly;
14 import gov.nist.secauto.metaschema.binding.model.annotations.ValueConstraints;
15 import gov.nist.secauto.metaschema.model.common.JsonGroupAsBehavior;
16 import gov.nist.secauto.metaschema.model.common.constraint.IConstraint;
17 import gov.nist.secauto.metaschema.model.common.datatype.adapter.TokenAdapter;
18 import gov.nist.secauto.metaschema.model.common.datatype.markup.MarkupLine;
19 import gov.nist.secauto.metaschema.model.common.datatype.markup.MarkupLineAdapter;
20 import gov.nist.secauto.metaschema.model.common.datatype.markup.MarkupMultiline;
21 import gov.nist.secauto.metaschema.model.common.datatype.markup.MarkupMultilineAdapter;
22 import gov.nist.secauto.metaschema.model.common.util.ObjectUtils;
23 import java.lang.Override;
24 import java.lang.String;
25 import java.util.LinkedList;
26 import java.util.List;
27 import org.apache.commons.lang3.builder.MultilineRecursiveToStringStyle;
28 import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
29
30
31
32
33 @MetaschemaAssembly(
34 formalName = "Modify Controls",
35 description = "Set parameters or amend controls in resolution.",
36 name = "modify",
37 metaschema = OscalProfileMetaschema.class
38 )
39 @AssemblyConstraints(
40 isUnique = @IsUnique(id = "unique-profile-modify-set-parameter", level = IConstraint.Level.ERROR, target = "set-parameter", keyFields = @KeyField(target = "@param-id"), remarks = "Since multiple `set-parameter` entries can be provided, each parameter must be set only once.")
41 )
42 public class Modify {
43
44
45
46 @BoundAssembly(
47 formalName = "Parameter Setting",
48 description = "A parameter setting, to be propagated to points of insertion.",
49 useName = "set-parameter",
50 maxOccurs = -1
51 )
52 @GroupAs(
53 name = "set-parameters",
54 inJson = JsonGroupAsBehavior.LIST
55 )
56 private List<ProfileSetParameter> _setParameters;
57
58
59
60
61 @BoundAssembly(
62 formalName = "Alteration",
63 description = "Specifies changes to be made to an included control when a profile is resolved.",
64 useName = "alter",
65 maxOccurs = -1,
66 remarks = "Use `@control-id` to indicate the scope of alteration.\n"
67 + "\n"
68 + "It is an error for two `alter` elements to apply to the same control. In practice, multiple alterations can be applied (together), but it creates confusion.\n"
69 + "\n"
70 + "At present, no provision is made for altering many controls at once (for example, to systematically remove properties or add global properties); extending this element to match multiple control IDs could provide for this."
71 )
72 @GroupAs(
73 name = "alters",
74 inJson = JsonGroupAsBehavior.LIST
75 )
76 private List<Alter> _alters;
77
78 public Modify() {
79 }
80
81 public List<ProfileSetParameter> getSetParameters() {
82 return _setParameters;
83 }
84
85 public void setSetParameters(List<ProfileSetParameter> value) {
86 _setParameters = value;
87 }
88
89
90
91
92
93
94 public boolean addSetParameter(ProfileSetParameter item) {
95 ProfileSetParameter value = ObjectUtils.requireNonNull(item,"item cannot be null");
96 if (_setParameters == null) {
97 _setParameters = new LinkedList<>();
98 }
99 return _setParameters.add(value);
100 }
101
102
103
104
105
106
107 public boolean removeSetParameter(ProfileSetParameter item) {
108 ProfileSetParameter value = ObjectUtils.requireNonNull(item,"item cannot be null");
109 return _setParameters == null ? false : _setParameters.remove(value);
110 }
111
112 public List<Alter> getAlters() {
113 return _alters;
114 }
115
116 public void setAlters(List<Alter> value) {
117 _alters = value;
118 }
119
120
121
122
123
124
125 public boolean addAlter(Alter item) {
126 Alter value = ObjectUtils.requireNonNull(item,"item cannot be null");
127 if (_alters == null) {
128 _alters = new LinkedList<>();
129 }
130 return _alters.add(value);
131 }
132
133
134
135
136
137
138 public boolean removeAlter(Alter item) {
139 Alter value = ObjectUtils.requireNonNull(item,"item cannot be null");
140 return _alters == null ? false : _alters.remove(value);
141 }
142
143 @Override
144 public String toString() {
145 return new ReflectionToStringBuilder(this, MultilineRecursiveToStringStyle.MULTI_LINE_STYLE).toString();
146 }
147
148
149
150
151 @MetaschemaAssembly(
152 formalName = "Alteration",
153 description = "Specifies changes to be made to an included control when a profile is resolved.",
154 name = "alter",
155 metaschema = OscalProfileMetaschema.class,
156 remarks = "Use `@control-id` to indicate the scope of alteration.\n"
157 + "\n"
158 + "It is an error for two `alter` elements to apply to the same control. In practice, multiple alterations can be applied (together), but it creates confusion.\n"
159 + "\n"
160 + "At present, no provision is made for altering many controls at once (for example, to systematically remove properties or add global properties); extending this element to match multiple control IDs could provide for this."
161 )
162 public static class Alter {
163 @BoundFlag(
164 formalName = "Control Identifier Reference",
165 description = "A reference to a control with a corresponding `id` value. When referencing an externally defined `control`, the `Control Identifier Reference` must be used in the context of the external / imported OSCAL instance (e.g., uri-reference).",
166 useName = "control-id",
167 required = true,
168 typeAdapter = TokenAdapter.class
169 )
170 private String _controlId;
171
172
173
174
175 @BoundAssembly(
176 formalName = "Removal",
177 description = "Specifies objects to be removed from a control based on specific aspects of the object that must all match.",
178 useName = "remove",
179 maxOccurs = -1,
180 remarks = "Use `by-name`, `by-class`, `by-id` or `by-item-name` to indicate class tokens or ID reference, or the formal name, of the component to be removed or erased from a control, when a catalog is resolved. The control affected is indicated by the pointer on the removal's parent (containing) `alter` element.\n"
181 + "\n"
182 + "To change an element, use `remove` to remove the element, then `add` to add it back again with changes."
183 )
184 @GroupAs(
185 name = "removes",
186 inJson = JsonGroupAsBehavior.LIST
187 )
188 private List<Remove> _removes;
189
190
191
192
193 @BoundAssembly(
194 formalName = "Addition",
195 description = "Specifies contents to be added into controls, in resolution.",
196 useName = "add",
197 maxOccurs = -1,
198 remarks = "When no `by-id` is given, the addition is inserted into the control targeted by the alteration at the start or end as indicated by `position`. Only `position` values of \"starting\" or \"ending\" are permitted when there is no `by-id`.\n"
199 + "\n"
200 + "`by-id`, when given, should indicate, by its ID, an element inside the control to serve as the anchor point for the addition. In this case, `position` value may be any of the permitted values."
201 )
202 @GroupAs(
203 name = "adds",
204 inJson = JsonGroupAsBehavior.LIST
205 )
206 private List<Add> _adds;
207
208 public Alter() {
209 }
210
211 public String getControlId() {
212 return _controlId;
213 }
214
215 public void setControlId(String value) {
216 _controlId = value;
217 }
218
219 public List<Remove> getRemoves() {
220 return _removes;
221 }
222
223 public void setRemoves(List<Remove> value) {
224 _removes = value;
225 }
226
227
228
229
230
231
232 public boolean addRemove(Remove item) {
233 Remove value = ObjectUtils.requireNonNull(item,"item cannot be null");
234 if (_removes == null) {
235 _removes = new LinkedList<>();
236 }
237 return _removes.add(value);
238 }
239
240
241
242
243
244
245 public boolean removeRemove(Remove item) {
246 Remove value = ObjectUtils.requireNonNull(item,"item cannot be null");
247 return _removes == null ? false : _removes.remove(value);
248 }
249
250 public List<Add> getAdds() {
251 return _adds;
252 }
253
254 public void setAdds(List<Add> value) {
255 _adds = value;
256 }
257
258
259
260
261
262
263 public boolean addAdd(Add item) {
264 Add value = ObjectUtils.requireNonNull(item,"item cannot be null");
265 if (_adds == null) {
266 _adds = new LinkedList<>();
267 }
268 return _adds.add(value);
269 }
270
271
272
273
274
275
276 public boolean removeAdd(Add item) {
277 Add value = ObjectUtils.requireNonNull(item,"item cannot be null");
278 return _adds == null ? false : _adds.remove(value);
279 }
280
281 @Override
282 public String toString() {
283 return new ReflectionToStringBuilder(this, MultilineRecursiveToStringStyle.MULTI_LINE_STYLE).toString();
284 }
285
286
287
288
289 @MetaschemaAssembly(
290 formalName = "Addition",
291 description = "Specifies contents to be added into controls, in resolution.",
292 name = "add",
293 metaschema = OscalProfileMetaschema.class,
294 remarks = "When no `by-id` is given, the addition is inserted into the control targeted by the alteration at the start or end as indicated by `position`. Only `position` values of \"starting\" or \"ending\" are permitted when there is no `by-id`.\n"
295 + "\n"
296 + "`by-id`, when given, should indicate, by its ID, an element inside the control to serve as the anchor point for the addition. In this case, `position` value may be any of the permitted values."
297 )
298 @ValueConstraints(
299 allowedValues = @AllowedValues(level = IConstraint.Level.ERROR, target = "prop[has-oscal-namespace('http://csrc.nist.gov/ns/oscal')]/@name", values = {@AllowedValue(value = "label", description = "A human-readable label for the parent context, which may be rendered in place of the actual identifier for some use cases."), @AllowedValue(value = "sort-id", description = "An alternative identifier, whose value is easily sortable among other such values in the document."), @AllowedValue(value = "alt-identifier", description = "An alternate or aliased identifier for the parent context.")})
300 )
301 public static class Add {
302 @BoundFlag(
303 formalName = "Position",
304 description = "Where to add the new content with respect to the targeted element (beside it or inside it).",
305 useName = "position",
306 typeAdapter = TokenAdapter.class
307 )
308 @ValueConstraints(
309 allowedValues = @AllowedValues(level = IConstraint.Level.ERROR, values = {@AllowedValue(value = "before", description = "Preceding the by-id target"), @AllowedValue(value = "after", description = "Following the by-id target"), @AllowedValue(value = "starting", description = "Inside the control or by-id target, at the start"), @AllowedValue(value = "ending", description = "Inside the control or by-id target, at the end")})
310 )
311 private String _position;
312
313 @BoundFlag(
314 formalName = "Reference by ID",
315 description = "Target location of the addition.",
316 useName = "by-id",
317 typeAdapter = TokenAdapter.class
318 )
319 private String _byId;
320
321
322
323
324 @BoundField(
325 formalName = "Title Change",
326 description = "A name given to the control, which may be used by a tool for display and navigation.",
327 useName = "title"
328 )
329 @BoundFieldValue(
330 typeAdapter = MarkupLineAdapter.class
331 )
332 private MarkupLine _title;
333
334 @BoundAssembly(
335 formalName = "Parameter",
336 description = "Parameters provide a mechanism for the dynamic assignment of value(s) in a control.",
337 useName = "param",
338 maxOccurs = -1
339 )
340 @GroupAs(
341 name = "params",
342 inJson = JsonGroupAsBehavior.LIST
343 )
344 private List<Parameter> _params;
345
346 @BoundAssembly(
347 formalName = "Property",
348 description = "An attribute, characteristic, or quality of the containing object expressed as a namespace qualified name/value pair.",
349 useName = "prop",
350 maxOccurs = -1
351 )
352 @GroupAs(
353 name = "props",
354 inJson = JsonGroupAsBehavior.LIST
355 )
356 private List<Property> _props;
357
358 @BoundAssembly(
359 formalName = "Link",
360 description = "A reference to a local or remote resource, that has a specific relation to the containing object.",
361 useName = "link",
362 maxOccurs = -1
363 )
364 @GroupAs(
365 name = "links",
366 inJson = JsonGroupAsBehavior.LIST
367 )
368 private List<Link> _links;
369
370 @BoundAssembly(
371 formalName = "Part",
372 description = "An annotated, markup-based textual element of a control's or catalog group's definition, or a child of another part.",
373 useName = "part",
374 maxOccurs = -1
375 )
376 @GroupAs(
377 name = "parts",
378 inJson = JsonGroupAsBehavior.LIST
379 )
380 private List<ControlPart> _parts;
381
382 public Add() {
383 }
384
385 public String getPosition() {
386 return _position;
387 }
388
389 public void setPosition(String value) {
390 _position = value;
391 }
392
393 public String getById() {
394 return _byId;
395 }
396
397 public void setById(String value) {
398 _byId = value;
399 }
400
401 public MarkupLine getTitle() {
402 return _title;
403 }
404
405 public void setTitle(MarkupLine value) {
406 _title = value;
407 }
408
409 public List<Parameter> getParams() {
410 return _params;
411 }
412
413 public void setParams(List<Parameter> value) {
414 _params = value;
415 }
416
417
418
419
420
421
422 public boolean addParam(Parameter item) {
423 Parameter value = ObjectUtils.requireNonNull(item,"item cannot be null");
424 if (_params == null) {
425 _params = new LinkedList<>();
426 }
427 return _params.add(value);
428 }
429
430
431
432
433
434
435 public boolean removeParam(Parameter item) {
436 Parameter value = ObjectUtils.requireNonNull(item,"item cannot be null");
437 return _params == null ? false : _params.remove(value);
438 }
439
440 public List<Property> getProps() {
441 return _props;
442 }
443
444 public void setProps(List<Property> value) {
445 _props = value;
446 }
447
448
449
450
451
452
453 public boolean addProp(Property item) {
454 Property value = ObjectUtils.requireNonNull(item,"item cannot be null");
455 if (_props == null) {
456 _props = new LinkedList<>();
457 }
458 return _props.add(value);
459 }
460
461
462
463
464
465
466 public boolean removeProp(Property item) {
467 Property value = ObjectUtils.requireNonNull(item,"item cannot be null");
468 return _props == null ? false : _props.remove(value);
469 }
470
471 public List<Link> getLinks() {
472 return _links;
473 }
474
475 public void setLinks(List<Link> value) {
476 _links = value;
477 }
478
479
480
481
482
483
484 public boolean addLink(Link item) {
485 Link value = ObjectUtils.requireNonNull(item,"item cannot be null");
486 if (_links == null) {
487 _links = new LinkedList<>();
488 }
489 return _links.add(value);
490 }
491
492
493
494
495
496
497 public boolean removeLink(Link item) {
498 Link value = ObjectUtils.requireNonNull(item,"item cannot be null");
499 return _links == null ? false : _links.remove(value);
500 }
501
502 public List<ControlPart> getParts() {
503 return _parts;
504 }
505
506 public void setParts(List<ControlPart> value) {
507 _parts = value;
508 }
509
510
511
512
513
514
515 public boolean addPart(ControlPart item) {
516 ControlPart value = ObjectUtils.requireNonNull(item,"item cannot be null");
517 if (_parts == null) {
518 _parts = new LinkedList<>();
519 }
520 return _parts.add(value);
521 }
522
523
524
525
526
527
528 public boolean removePart(ControlPart item) {
529 ControlPart value = ObjectUtils.requireNonNull(item,"item cannot be null");
530 return _parts == null ? false : _parts.remove(value);
531 }
532
533 @Override
534 public String toString() {
535 return new ReflectionToStringBuilder(this, MultilineRecursiveToStringStyle.MULTI_LINE_STYLE).toString();
536 }
537 }
538
539
540
541
542 @MetaschemaAssembly(
543 formalName = "Removal",
544 description = "Specifies objects to be removed from a control based on specific aspects of the object that must all match.",
545 name = "remove",
546 metaschema = OscalProfileMetaschema.class,
547 remarks = "Use `by-name`, `by-class`, `by-id` or `by-item-name` to indicate class tokens or ID reference, or the formal name, of the component to be removed or erased from a control, when a catalog is resolved. The control affected is indicated by the pointer on the removal's parent (containing) `alter` element.\n"
548 + "\n"
549 + "To change an element, use `remove` to remove the element, then `add` to add it back again with changes."
550 )
551 public static class Remove {
552 @BoundFlag(
553 formalName = "Reference by (assigned) name",
554 description = "Identify items remove by matching their assigned name.",
555 useName = "by-name",
556 typeAdapter = TokenAdapter.class
557 )
558 private String _byName;
559
560 @BoundFlag(
561 formalName = "Reference by class",
562 description = "Identify items to remove by matching their `class`.",
563 useName = "by-class",
564 typeAdapter = TokenAdapter.class
565 )
566 private String _byClass;
567
568 @BoundFlag(
569 formalName = "Reference by ID",
570 description = "Identify items to remove indicated by their `id`.",
571 useName = "by-id",
572 typeAdapter = TokenAdapter.class
573 )
574 private String _byId;
575
576 @BoundFlag(
577 formalName = "Item Name Reference",
578 description = "Identify items to remove by the name of the item's information object name, e.g. `title` or `prop`.",
579 useName = "by-item-name",
580 typeAdapter = TokenAdapter.class
581 )
582 @ValueConstraints(
583 allowedValues = @AllowedValues(level = IConstraint.Level.ERROR, values = {@AllowedValue(value = "param", description = "A descendant parameter and all of its descendants."), @AllowedValue(value = "prop", description = "A descendant property and all of its descendants."), @AllowedValue(value = "link", description = "A descendant link and all of its descendants."), @AllowedValue(value = "part", description = "A descendant parameter and all of its descendants."), @AllowedValue(value = "mapping", description = "A descendant mapping and all of its descendants."), @AllowedValue(value = "map", description = "A descendant mapping entry (map) and all of its descendants.")})
584 )
585 private String _byItemName;
586
587 @BoundFlag(
588 formalName = "Item Namespace Reference",
589 description = "Identify items to remove by the item's `ns`, which is the namespace associated with a `part`, or `prop`.",
590 useName = "by-ns",
591 typeAdapter = TokenAdapter.class
592 )
593 private String _byNs;
594
595 public Remove() {
596 }
597
598 public String getByName() {
599 return _byName;
600 }
601
602 public void setByName(String value) {
603 _byName = value;
604 }
605
606 public String getByClass() {
607 return _byClass;
608 }
609
610 public void setByClass(String value) {
611 _byClass = value;
612 }
613
614 public String getById() {
615 return _byId;
616 }
617
618 public void setById(String value) {
619 _byId = value;
620 }
621
622 public String getByItemName() {
623 return _byItemName;
624 }
625
626 public void setByItemName(String value) {
627 _byItemName = value;
628 }
629
630 public String getByNs() {
631 return _byNs;
632 }
633
634 public void setByNs(String value) {
635 _byNs = value;
636 }
637
638 @Override
639 public String toString() {
640 return new ReflectionToStringBuilder(this, MultilineRecursiveToStringStyle.MULTI_LINE_STYLE).toString();
641 }
642 }
643 }
644
645
646
647
648 @MetaschemaAssembly(
649 formalName = "Parameter Setting",
650 description = "A parameter setting, to be propagated to points of insertion.",
651 name = "set-parameter",
652 metaschema = OscalProfileMetaschema.class
653 )
654 public static class ProfileSetParameter {
655 @BoundFlag(
656 formalName = "Parameter ID",
657 description = "An identifier for the parameter.",
658 useName = "param-id",
659 required = true,
660 typeAdapter = TokenAdapter.class
661 )
662 private String _paramId;
663
664 @BoundFlag(
665 formalName = "Parameter Class",
666 description = "A textual label that provides a characterization of the parameter.",
667 useName = "class",
668 typeAdapter = TokenAdapter.class,
669 remarks = "A `class` can be used in validation rules to express extra constraints over named items of a specific `class` value."
670 )
671 private String _clazz;
672
673 @BoundFlag(
674 formalName = "Depends On",
675 description = "\\*\\*(deprecated)\\*\\* Another parameter invoking this one. This construct has been deprecated and should not be used.",
676 useName = "depends-on",
677 typeAdapter = TokenAdapter.class
678 )
679 private String _dependsOn;
680
681 @BoundAssembly(
682 formalName = "Property",
683 description = "An attribute, characteristic, or quality of the containing object expressed as a namespace qualified name/value pair.",
684 useName = "prop",
685 maxOccurs = -1
686 )
687 @GroupAs(
688 name = "props",
689 inJson = JsonGroupAsBehavior.LIST
690 )
691 private List<Property> _props;
692
693 @BoundAssembly(
694 formalName = "Link",
695 description = "A reference to a local or remote resource, that has a specific relation to the containing object.",
696 useName = "link",
697 maxOccurs = -1
698 )
699 @GroupAs(
700 name = "links",
701 inJson = JsonGroupAsBehavior.LIST
702 )
703 private List<Link> _links;
704
705
706
707
708 @BoundField(
709 formalName = "Parameter Label",
710 description = "A short, placeholder name for the parameter, which can be used as a substitute for a `value` if no value is assigned.",
711 useName = "label",
712 remarks = "The label value should be suitable for inline display in a rendered catalog."
713 )
714 @BoundFieldValue(
715 typeAdapter = MarkupLineAdapter.class
716 )
717 private MarkupLine _label;
718
719
720
721
722 @BoundField(
723 formalName = "Parameter Usage Description",
724 description = "Describes the purpose and use of a parameter.",
725 useName = "usage"
726 )
727 @BoundFieldValue(
728 typeAdapter = MarkupMultilineAdapter.class
729 )
730 private MarkupMultiline _usage;
731
732 @BoundAssembly(
733 formalName = "Constraint",
734 description = "A formal or informal expression of a constraint or test.",
735 useName = "constraint",
736 maxOccurs = -1
737 )
738 @GroupAs(
739 name = "constraints",
740 inJson = JsonGroupAsBehavior.LIST
741 )
742 private List<ParameterConstraint> _constraints;
743
744 @BoundAssembly(
745 formalName = "Guideline",
746 description = "A prose statement that provides a recommendation for the use of a parameter.",
747 useName = "guideline",
748 maxOccurs = -1
749 )
750 @GroupAs(
751 name = "guidelines",
752 inJson = JsonGroupAsBehavior.LIST
753 )
754 private List<ParameterGuideline> _guidelines;
755
756 @BoundField(
757 formalName = "Parameter Value",
758 description = "A parameter value or set of values.",
759 useName = "value",
760 maxOccurs = -1,
761 remarks = "Used to (re)define a parameter value."
762 )
763 @GroupAs(
764 name = "values",
765 inJson = JsonGroupAsBehavior.LIST
766 )
767 private List<String> _values;
768
769 @BoundAssembly(
770 formalName = "Selection",
771 description = "Presenting a choice among alternatives.",
772 useName = "select"
773 )
774 private ParameterSelection _select;
775
776 public ProfileSetParameter() {
777 }
778
779 public String getParamId() {
780 return _paramId;
781 }
782
783 public void setParamId(String value) {
784 _paramId = value;
785 }
786
787 public String getClazz() {
788 return _clazz;
789 }
790
791 public void setClazz(String value) {
792 _clazz = value;
793 }
794
795 public String getDependsOn() {
796 return _dependsOn;
797 }
798
799 public void setDependsOn(String value) {
800 _dependsOn = value;
801 }
802
803 public List<Property> getProps() {
804 return _props;
805 }
806
807 public void setProps(List<Property> value) {
808 _props = value;
809 }
810
811
812
813
814
815
816 public boolean addProp(Property item) {
817 Property value = ObjectUtils.requireNonNull(item,"item cannot be null");
818 if (_props == null) {
819 _props = new LinkedList<>();
820 }
821 return _props.add(value);
822 }
823
824
825
826
827
828
829 public boolean removeProp(Property item) {
830 Property value = ObjectUtils.requireNonNull(item,"item cannot be null");
831 return _props == null ? false : _props.remove(value);
832 }
833
834 public List<Link> getLinks() {
835 return _links;
836 }
837
838 public void setLinks(List<Link> value) {
839 _links = value;
840 }
841
842
843
844
845
846
847 public boolean addLink(Link item) {
848 Link value = ObjectUtils.requireNonNull(item,"item cannot be null");
849 if (_links == null) {
850 _links = new LinkedList<>();
851 }
852 return _links.add(value);
853 }
854
855
856
857
858
859
860 public boolean removeLink(Link item) {
861 Link value = ObjectUtils.requireNonNull(item,"item cannot be null");
862 return _links == null ? false : _links.remove(value);
863 }
864
865 public MarkupLine getLabel() {
866 return _label;
867 }
868
869 public void setLabel(MarkupLine value) {
870 _label = value;
871 }
872
873 public MarkupMultiline getUsage() {
874 return _usage;
875 }
876
877 public void setUsage(MarkupMultiline value) {
878 _usage = value;
879 }
880
881 public List<ParameterConstraint> getConstraints() {
882 return _constraints;
883 }
884
885 public void setConstraints(List<ParameterConstraint> value) {
886 _constraints = value;
887 }
888
889
890
891
892
893
894 public boolean addConstraint(ParameterConstraint item) {
895 ParameterConstraint value = ObjectUtils.requireNonNull(item,"item cannot be null");
896 if (_constraints == null) {
897 _constraints = new LinkedList<>();
898 }
899 return _constraints.add(value);
900 }
901
902
903
904
905
906
907 public boolean removeConstraint(ParameterConstraint item) {
908 ParameterConstraint value = ObjectUtils.requireNonNull(item,"item cannot be null");
909 return _constraints == null ? false : _constraints.remove(value);
910 }
911
912 public List<ParameterGuideline> getGuidelines() {
913 return _guidelines;
914 }
915
916 public void setGuidelines(List<ParameterGuideline> value) {
917 _guidelines = value;
918 }
919
920
921
922
923
924
925 public boolean addGuideline(ParameterGuideline item) {
926 ParameterGuideline value = ObjectUtils.requireNonNull(item,"item cannot be null");
927 if (_guidelines == null) {
928 _guidelines = new LinkedList<>();
929 }
930 return _guidelines.add(value);
931 }
932
933
934
935
936
937
938 public boolean removeGuideline(ParameterGuideline item) {
939 ParameterGuideline value = ObjectUtils.requireNonNull(item,"item cannot be null");
940 return _guidelines == null ? false : _guidelines.remove(value);
941 }
942
943 public List<String> getValues() {
944 return _values;
945 }
946
947 public void setValues(List<String> value) {
948 _values = value;
949 }
950
951
952
953
954
955
956 public boolean addValue(String item) {
957 String value = ObjectUtils.requireNonNull(item,"item cannot be null");
958 if (_values == null) {
959 _values = new LinkedList<>();
960 }
961 return _values.add(value);
962 }
963
964
965
966
967
968
969 public boolean removeValue(String item) {
970 String value = ObjectUtils.requireNonNull(item,"item cannot be null");
971 return _values == null ? false : _values.remove(value);
972 }
973
974 public ParameterSelection getSelect() {
975 return _select;
976 }
977
978 public void setSelect(ParameterSelection value) {
979 _select = value;
980 }
981
982 @Override
983 public String toString() {
984 return new ReflectionToStringBuilder(this, MultilineRecursiveToStringStyle.MULTI_LINE_STYLE).toString();
985 }
986 }
987 }