package com.vaguehope.onosendai.config; import java.util.regex.Matcher; import java.util.regex.Pattern; public final class TimeParser { private static final int MINUTES_IN_HOUR = 60; private TimeParser () { throw new AssertionError(); } private static final Pattern DURATION_PATTERN = Pattern.compile("^(?:([\\d]+)hours?)?\\s*(?:([\\d]+)mins?)?$", Pattern.CASE_INSENSITIVE); /** * @return duration in minutes or less than 0 if invalid. */ public static int parseDuration (final String s) { if (s == null || s.isEmpty()) return 0; final String t = s.trim(); if (t.isEmpty()) return 0; final Matcher m = DURATION_PATTERN.matcher(t); if (m.matches()) { final int hours = parseInt(m.group(1)); final int mins = parseInt(m.group(2)); return (hours * MINUTES_IN_HOUR) + mins; } return -1; } private static int parseInt (final String s) { if (s == null) return 0; return Integer.parseInt(s); } }