public Parser(String input) throws ParsingException { this.input = input; final StringTokenizer st = new StringTokenizer(input); final int tokenCount = st.countTokens(); if (tokenCount == 1) { // Try for a schedule name final String name = st.nextToken(); final String cron = Scheduler.getInstance().getNamedSchedule(name); if (cron == null) { throw new ParsingException("Named schedule not found: " + name); } final Parser subParser = new Parser(cron); minutes = subParser.minutes; hours = subParser.hours; days = subParser.days; dates = subParser.dates; months = subParser.months; isYear = subParser.isYear; years = subParser.years; record = subParser.record; } else if (tokenCount == 6) { minutes = parseList(st.nextToken(), 0, 59); hours = parseList(st.nextToken(), 0, 23); days = parseList(st.nextToken(), 0, 7); dates = parseList(st.nextToken(), 1, 31); months = parseList(st.nextToken(), 1, 12); isYear = true; years = parseList(st.nextToken(), 0, 49); if (days[0] || days[7]) { // Both 0 and 7 are Sunday days[0] = true; days[7] = true; } record = new Record(minutes, hours, days, dates, months, years); } else { throw new ParsingException("Invalid number of tokens"); } ba = null; tokenStream = null; }