package org.sejda.conversion;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang3.StringUtils;
import org.sejda.conversion.exception.ConversionException;
import org.sejda.model.exception.SejdaRuntimeException;
/**
* Converts a string to a list of integers representing page numbers
*
* @author Eduard Weissmann
*/
public class PageNumbersListAdapter {
private static final String SEPARATOR = ",";
private List<Integer> pageNumbers;
public PageNumbersListAdapter(String rawString) {
try {
pageNumbers = doParsePageNumbers(rawString);
} catch (SejdaRuntimeException e) {
throw new ConversionException("Unparsable page numbers '" + rawString + "'. " + e.getMessage(), e);
}
}
public List<Integer> getPageNumbers() {
return pageNumbers;
}
/**
* @param rawString
* string representation of the List<Integer> page numbers
*/
private List<Integer> doParsePageNumbers(String rawString) {
List<Integer> result = new ArrayList<>();
for (String s : AdapterUtils.splitAndTrim(rawString, SEPARATOR)) {
result.add(parsePageNumber(s));
}
return result;
}
private int parsePageNumber(String s) {
return AdapterUtils.parseInt(StringUtils.trim(s), "page number");
}
}