1 package emissary.command.converter;
2
3 import emissary.pickup.Priority;
4 import emissary.pickup.PriorityDirectory;
5
6 import org.apache.commons.lang3.StringUtils;
7 import org.apache.commons.lang3.Strings;
8 import picocli.CommandLine.ITypeConverter;
9
10 import java.util.regex.Matcher;
11 import java.util.regex.Pattern;
12
13 public class PriorityDirectoryConverter implements ITypeConverter<PriorityDirectory> {
14
15 public PriorityDirectoryConverter() {
16 super();
17 }
18
19 public static final String PRIORITY_DIR_REGEX = ".*:\\d+$";
20 private static final Pattern priorityDirRegex = Pattern.compile(PRIORITY_DIR_REGEX);
21
22 @Override
23 public PriorityDirectory convert(String value) {
24 final String dirName;
25 final int priority;
26 Matcher matcher = priorityDirRegex.matcher(value);
27 if (matcher.matches()) {
28 dirName = StringUtils.substringBeforeLast(value, ":");
29 priority = Integer.parseInt(StringUtils.substringAfterLast(value, ":"));
30 } else {
31 dirName = value;
32 priority = Priority.DEFAULT;
33 }
34 return new PriorityDirectory(Strings.CS.appendIfMissing(dirName, "/"), priority);
35 }
36 }