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