View Javadoc
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  }