/** * @param args a map with values for {@code year}, {@code month}, {@code day} (day of month), * {@code weekDay} */ @Override public RuleMatch acceptRuleMatch( RuleMatch match, Map<String, String> args, AnalyzedTokenReadings[] patternTokens) { int dayOfWeekFromString = getDayOfWeek(getRequired("weekDay", args)); Calendar dateFromDate = getDate(args); int dayOfWeekFromDate; try { dayOfWeekFromDate = dateFromDate.get(Calendar.DAY_OF_WEEK); } catch (IllegalArgumentException ignore) { // happens with 'dates' like '32.8.2014' - those should be caught by a different rule return null; } if (dayOfWeekFromString != dayOfWeekFromDate) { String realDayName = getDayOfWeek(dateFromDate); String message = match.getMessage().replace("\\realDay", realDayName); RuleMatch newMatch = new RuleMatch( match.getRule(), match.getFromPos(), match.getToPos(), message, match.getShortMessage()); return newMatch; } else { return null; } }