PriorityDirectoryConverter.java
package emissary.command.converter;
import emissary.pickup.Priority;
import emissary.pickup.PriorityDirectory;
import org.apache.commons.lang3.StringUtils;
import picocli.CommandLine.ITypeConverter;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class PriorityDirectoryConverter implements ITypeConverter<PriorityDirectory> {
    public PriorityDirectoryConverter() {
        super();
    }
    public static final String PRIORITY_DIR_REGEX = ".*:\\d+$";
    private static final Pattern priorityDirRegex = Pattern.compile(PRIORITY_DIR_REGEX);
    @Override
    public PriorityDirectory convert(String value) {
        final String dirName;
        final int priority;
        Matcher matcher = priorityDirRegex.matcher(value);
        if (matcher.matches()) {
            dirName = StringUtils.substringBeforeLast(value, ":");
            priority = Integer.parseInt(StringUtils.substringAfterLast(value, ":"));
        } else {
            dirName = value;
            priority = Priority.DEFAULT;
        }
        return new PriorityDirectory(StringUtils.appendIfMissing(dirName, "/"), priority);
    }
}