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 picocli.CommandLine.ITypeConverter;
8
9 import java.util.regex.Matcher;
10 import java.util.regex.Pattern;
11
12 public class PriorityDirectoryConverter implements ITypeConverter<PriorityDirectory> {
13
14 public PriorityDirectoryConverter() {
15 super();
16 }
17
18 public static final String PRIORITY_DIR_REGEX = ".*:\\d+$";
19 private static final Pattern priorityDirRegex = Pattern.compile(PRIORITY_DIR_REGEX);
20
21 @Override
22 public PriorityDirectory convert(String value) {
23 final String dirName;
24 final int priority;
25 Matcher matcher = priorityDirRegex.matcher(value);
26 if (matcher.matches()) {
27 dirName = StringUtils.substringBeforeLast(value, ":");
28 priority = Integer.parseInt(StringUtils.substringAfterLast(value, ":"));
29 } else {
30 dirName = value;
31 priority = Priority.DEFAULT;
32 }
33 return new PriorityDirectory(StringUtils.appendIfMissing(dirName, "/"), priority);
34 }
35 }