1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package it.jnrpe.commands;
17
18 import it.jnrpe.utils.StringUtils;
19
20 import java.util.ArrayList;
21 import java.util.Collection;
22 import java.util.List;
23
24
25
26
27
28
29 public final class CommandDefinition {
30
31
32
33 private final String name;
34
35
36
37 private final String pluginName;
38
39
40
41
42 private String argsString = null;
43
44
45
46
47 private List<CommandOption> optionsList = new ArrayList<CommandOption>();
48
49
50
51
52
53
54
55
56
57 public CommandDefinition(final String commandName,
58 final String cmdPluginName) {
59 this.name = commandName;
60 this.pluginName = cmdPluginName;
61 }
62
63
64
65
66
67
68
69 public void setArgs(final String args) {
70 argsString = args;
71 }
72
73
74
75
76
77
78 public String getName() {
79 return name;
80 }
81
82
83
84
85
86
87 public String getPluginName() {
88 return pluginName;
89 }
90
91
92
93
94
95
96 public String getArgs() {
97 return argsString;
98 }
99
100
101
102
103
104
105
106
107 private static String quote(final String s) {
108 if (s.indexOf(' ') != -1) {
109 return "\"" + s + "\"";
110 }
111 return s;
112 }
113
114
115
116
117
118
119
120 public String[] getCommandLine() {
121 String[] resAry = null;
122 String[] argsAry =
123 argsString != null ? split(argsString) : new String[0];
124 List<String> argsList = new ArrayList<String>();
125
126 int startIndex = 0;
127
128 for (CommandOption opt : optionsList) {
129 String argName = opt.getName();
130 String argValueString = opt.getValue();
131
132 argsList.add((argName.length() == 1 ? "-" : "--") + argName);
133
134 if (argValueString != null) {
135 argsList.add(quote(argValueString));
136 }
137 }
138
139 resAry = new String[argsAry.length + argsList.size()];
140
141 for (String argString : argsList) {
142 resAry[startIndex++] = argString;
143 }
144
145
146 System.arraycopy(argsAry, 0, resAry, startIndex, argsAry.length);
147
148 return resAry;
149 }
150
151
152
153
154
155
156
157
158
159 private static String[] split(final String commandLine) {
160 return StringUtils.split(commandLine, false);
161 }
162
163
164
165
166
167
168
169
170 public CommandDefinition addArgument(final CommandOption arg) {
171 optionsList.add(arg);
172 return this;
173 }
174
175
176
177
178 public Collection<CommandOption> getOptions() {
179 return optionsList;
180 }
181 }