private int parseDeltaAmount(Tokenizer tokenizer) throws ParseException { expectKeyword(POSITIVE_DELTA, NEGATIVE_DELTA); boolean subtract = NEGATIVE_DELTA.equals(tokenizer.getToken()); tokenizer.nextToken(); expectNumber(); int amount = Integer.parseInt(tokenizer.getToken()); if (subtract) { amount *= -1; } return amount; }
private Calendar parseDate(Tokenizer tokenizer) throws ParseException { expectNumber(); int firstNumber = Integer.parseInt(tokenizer.getToken()); tokenizer.nextToken(); if (!GERMAN_DATE_SEPARATOR.equals(tokenizer.getToken()) && !ENGLISH_DATE_SEPARATOR.equals(tokenizer.getToken())) { return parseYMExpression(firstNumber); } expectKeyword(GERMAN_DATE_SEPARATOR, ENGLISH_DATE_SEPARATOR); if (GERMAN_DATE_SEPARATOR.equals(tokenizer.getToken())) { return parseGermanDate(firstNumber); } else { return parseEnglishDate(firstNumber); } }
if (in(TIME_SEPARATOR)) { tokenizer.nextToken(); expectNumber(); minute = Integer.parseInt(tokenizer.getToken()); tokenizer.nextToken(); if (in(TIME_SEPARATOR)) { tokenizer.nextToken(); expectNumber(); second = Integer.parseInt(tokenizer.getToken()); tokenizer.nextToken();
private Calendar parseEnglishDate(int month) throws ParseException { tokenizer.nextToken(); expectNumber(); int day = Integer.parseInt(tokenizer.getToken()); tokenizer.nextToken(); int year = now().get(Calendar.YEAR); if (in(ENGLISH_DATE_SEPARATOR)) { tokenizer.nextToken(); if (tokenizer.getType() == Tokenizer.NUMBER) { year = Integer.parseInt(tokenizer.getToken()); year = fixYear(year); tokenizer.nextToken(); } } if (tokenizer.getType() == Tokenizer.NUMBER) { return parseTime(buildCalendar(day, month, year)); } return buildCalendar(day, month, year); }
private Calendar parseGermanDate(int day) throws ParseException { tokenizer.nextToken(); expectNumber(); int month = Integer.parseInt(tokenizer.getToken()); tokenizer.nextToken(); int year = now().get(Calendar.YEAR); if (in(GERMAN_DATE_SEPARATOR)) { tokenizer.nextToken(); if (tokenizer.getType() == Tokenizer.NUMBER) { year = Integer.parseInt(tokenizer.getToken()); year = fixYear(year); tokenizer.nextToken(); } } if (tokenizer.getType() == Tokenizer.NUMBER) { return parseTime(buildCalendar(day, month, year)); } return buildCalendar(day, month, year); }
private Calendar parseFixPoint() throws ParseException { if (tokenizer.getType() == Tokenizer.NUMBER) { return parseDate(tokenizer); } if (tokenizer.getType() == Tokenizer.SPECIAL) { return now(); } if (tokenizer.getType() == Tokenizer.END_OF_INPUT) { return now(); } if (in(calendarWeek())) { tokenizer.nextToken(); expectNumber(); Calendar result = now(); result.set(Calendar.WEEK_OF_YEAR, Integer.parseInt(tokenizer.getToken())); forceConversion(result); tokenizer.nextToken(); return result; } expectKeyword(nowToken()); tokenizer.nextToken(); return now(); }