Classes in this File | Line Coverage | Branch Coverage | Complexity | ||||
GroupBuilder |
|
| 1.0;1 |
1 | /** | |
2 | * Licensed to the Apache Software Foundation (ASF) under one or more | |
3 | * contributor license agreements. See the NOTICE file distributed with | |
4 | * this work for additional information regarding copyright ownership. | |
5 | * The ASF licenses this file to You under the Apache License, Version 2.0 | |
6 | * (the "License"); you may not use this file except in compliance with | |
7 | * the License. You may obtain a copy of the License at | |
8 | * | |
9 | * http://www.apache.org/licenses/LICENSE-2.0 | |
10 | * | |
11 | * Unless required by applicable law or agreed to in writing, software | |
12 | * distributed under the License is distributed on an "AS IS" BASIS, | |
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
14 | * See the License for the specific language governing permissions and | |
15 | * limitations under the License. | |
16 | */ | |
17 | package org.apache.commons.cli2.builder; | |
18 | ||
19 | import java.util.ArrayList; | |
20 | import java.util.List; | |
21 | ||
22 | import org.apache.commons.cli2.Group; | |
23 | import org.apache.commons.cli2.Option; | |
24 | import org.apache.commons.cli2.option.GroupImpl; | |
25 | ||
26 | /** | |
27 | * Builds Group instances | |
28 | */ | |
29 | public class GroupBuilder { | |
30 | ||
31 | private String name; | |
32 | private String description; | |
33 | private List options; | |
34 | private int minimum; | |
35 | private int maximum; | |
36 | private boolean required; | |
37 | ||
38 | /** | |
39 | * Creates a new GroupBuilder | |
40 | */ | |
41 | 248 | public GroupBuilder() { |
42 | 248 | reset(); |
43 | 248 | } |
44 | ||
45 | /** | |
46 | * Creates a new Group instance | |
47 | * @return the new Group instance | |
48 | */ | |
49 | public Group create() { | |
50 | 277 | final GroupImpl group = |
51 | new GroupImpl(options, name, description, minimum, maximum, required); | |
52 | ||
53 | 277 | reset(); |
54 | ||
55 | 277 | return group; |
56 | } | |
57 | ||
58 | /** | |
59 | * Resets the builder. | |
60 | * @return this builder | |
61 | */ | |
62 | public GroupBuilder reset() { | |
63 | 526 | name = null; |
64 | 526 | description = null; |
65 | 526 | options = new ArrayList(); |
66 | 526 | minimum = 0; |
67 | 526 | maximum = Integer.MAX_VALUE; |
68 | 526 | required = true; |
69 | 526 | return this; |
70 | } | |
71 | ||
72 | /** | |
73 | * Use this option description. | |
74 | * @param newDescription the description to use | |
75 | * @return this builder | |
76 | */ | |
77 | public GroupBuilder withDescription(final String newDescription) { | |
78 | 10 | this.description = newDescription; |
79 | 10 | return this; |
80 | } | |
81 | ||
82 | /** | |
83 | * Use this option name | |
84 | * @param newName the name to use | |
85 | * @return this builder | |
86 | */ | |
87 | public GroupBuilder withName(final String newName) { | |
88 | 79 | this.name = newName; |
89 | 79 | return this; |
90 | } | |
91 | ||
92 | /** | |
93 | * A valid group requires at least this many options present | |
94 | * @param newMinimum the minimum Options required | |
95 | * @return this builder | |
96 | */ | |
97 | public GroupBuilder withMinimum(final int newMinimum) { | |
98 | 28 | this.minimum = newMinimum; |
99 | 28 | return this; |
100 | } | |
101 | ||
102 | /** | |
103 | * A valid group requires at most this many options present | |
104 | * @param newMaximum the maximum Options allowed | |
105 | * @return this builder | |
106 | */ | |
107 | public GroupBuilder withMaximum(final int newMaximum) { | |
108 | 19 | this.maximum = newMaximum; |
109 | 19 | return this; |
110 | } | |
111 | ||
112 | /** | |
113 | * Add this option to the group | |
114 | * @param option the Option to add | |
115 | * @return this builder | |
116 | */ | |
117 | public GroupBuilder withOption(final Option option) { | |
118 | 1101 | this.options.add(option); |
119 | 1101 | return this; |
120 | } | |
121 | ||
122 | /** | |
123 | * Sets the required flag. This flag is evaluated for groups that are | |
124 | * added to other groups as child groups. If set to <b>true</b> the | |
125 | * minimum and maximum constraints of the child group are always evaluated. | |
126 | * @param newRequired the required flag | |
127 | * @return this builder | |
128 | */ | |
129 | public GroupBuilder withRequired(final boolean newRequired) { | |
130 | 6 | this.required = newRequired; |
131 | 6 | return this; |
132 | } | |
133 | } |