package tc.oc.pgm.xml.parser;
import javax.inject.Inject;
import java.time.Duration;
import java.time.format.DateTimeParseException;
import tc.oc.commons.core.util.TimeUtils;
import tc.oc.pgm.xml.InvalidXMLException;
import tc.oc.pgm.xml.Node;
public class DurationParser extends TransfiniteParser<Duration> {
private static final DurationParser INSTANCE = new DurationParser();
public static DurationParser get() { return INSTANCE; }
@Inject private DurationParser() {}
@Override
protected Duration infinity(boolean sign) {
if(sign) return TimeUtils.INF_POSITIVE;
throw new UnsupportedOperationException();
}
@Override
protected Duration parseFinite(Node node, String text) throws FormatException, InvalidXMLException {
try {
return TimeUtils.parseDuration(text);
} catch(DateTimeParseException e) {
throw new FormatException();
}
}
}