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 }