1
2
3
4
5
6 package dev.metaschema.cli.processor;
7
8 import java.util.Arrays;
9 import java.util.List;
10
11 import dev.metaschema.core.util.CollectionUtil;
12 import dev.metaschema.core.util.ObjectUtils;
13 import edu.umd.cs.findbugs.annotations.NonNull;
14
15
16
17
18
19
20
21 public class MessageExitStatus
22 extends AbstractExitStatus {
23 private final List<Object> messageArguments;
24
25
26
27
28
29
30
31
32
33
34 public MessageExitStatus(@NonNull ExitCode code, @NonNull Object... messageArguments) {
35 super(code);
36 this.messageArguments = CollectionUtil.unmodifiableList(
37 ObjectUtils.notNull(Arrays.asList(messageArguments)));
38 }
39
40 @Override
41 public String getMessage() {
42 String format = lookupMessageForCode(getExitCode());
43 return String.format(format, messageArguments.toArray());
44 }
45
46 private String lookupMessageForCode(@SuppressWarnings("unused") ExitCode ignoredExitCode) {
47
48 StringBuilder builder = new StringBuilder();
49
50 for (int index = 1; index <= messageArguments.size(); index++) {
51 if (index > 1) {
52 builder.append(' ');
53 }
54 builder.append("%s");
55
56 }
57 return builder.toString();
58 }
59 }