static Indexes parse(String indexes) { if (StringUtils.isBlank(indexes)) { return ALL; } else if (INDEX_PATTERN.matcher(indexes).matches()) { return new SimpleIndexes(Integer.parseInt(indexes)); } else if (RANGE_PATTERN.matcher(indexes).matches()) { final String leftAsString = StringUtils.substringBefore(indexes, ":"); final String rightAsString = StringUtils.substringAfter(indexes, ":"); return new RangeIndexes( StringUtils.isNotBlank(leftAsString) ? Integer.parseInt(leftAsString) : null, StringUtils.isNotBlank(rightAsString) ? Integer.parseInt(rightAsString) : null); } else { return EMPTY; } }
public SortedSet<Integer> getIndexes(int size) { final SortedSet<Integer> allIndexes = Sets.newTreeSet(); final int actualLeft = actualLeft(size); final int actualRight = actualRight(size); if (actualLeft != -1 && actualRight != -1) { for (int i = actualLeft; i <= actualRight; i++) { allIndexes.add(i); } } return allIndexes; }
public int getMinIndex(int size) { return actualLeft(size); }
public int getMaxIndex(int size) { return actualRight(size); }
public boolean contains(int index, int size) { if (!isInBound(index, size)) { return false; } final int p = toPositiveIndex(index, size); return p >= actualLeft(size) && p <= actualRight(size); }