{"record":{"id":"5ec3b516327c1422","repo":"languagetool-org/languagetool","slug":"could-not-find-day-of-week-for-daystr-5ec3b5","errorCode":null,"errorMessage":"Could not find day of week for '<dayStr>'","messagePattern":"Could not find day of week for '<dayStr>'","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"languagetool-language-modules/nl/src/main/java/org/languagetool/rules/nl/DateCheckFilter.java","lineNumber":49,"sourceCode":"\n  @Override\n  protected Calendar getCalendar() {\n    return Calendar.getInstance(Locale.UK);\n  }\n\n\n  @SuppressWarnings(\"ControlFlowStatementWithoutBraces\")\n  @Override\n  protected int getDayOfWeek(String dayStr) {\n    String day = dayStr.toLowerCase();\n    if (day.equals(\"zo\") || day.equals(\"zondag\")) return Calendar.SUNDAY;\n    if (day.equals(\"ma\") || day.equals(\"maandag\")) return Calendar.MONDAY;\n    if (day.equals(\"di\") || day.equals(\"dinsdag\")) return Calendar.TUESDAY;\n    if (day.equals(\"wo\") || day.equals(\"woensdag\")) return Calendar.WEDNESDAY;\n    if (day.equals(\"do\") || day.equals(\"donderdag\")) return Calendar.THURSDAY;\n    if (day.equals(\"vr\") || day.equals(\"vrijdag\")) return Calendar.FRIDAY;\n    if (day.equals(\"za\") || day.equals(\"zaterdag\")) return Calendar.SATURDAY;\n    throw new RuntimeException(\"Could not find day of week for '\" + dayStr + \"'\");\n  }\n\n  @SuppressWarnings(\"ControlFlowStatementWithoutBraces\")\n  @Override\n  protected String getDayOfWeek(Calendar date) {\n    String englishDay = date.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.LONG, Locale.UK);\n    if (englishDay.equals(\"Sunday\")) return \"zondag\";\n    if (englishDay.equals(\"Monday\")) return \"maandag\";\n    if (englishDay.equals(\"Tuesday\")) return \"dinsdag\";\n    if (englishDay.equals(\"Wednesday\")) return \"woensdag\";\n    if (englishDay.equals(\"Thursday\")) return \"donderdag\";\n    if (englishDay.equals(\"Friday\")) return \"vrijdag\";\n    if (englishDay.equals(\"Saturday\")) return \"zaterdag\";\n    return \"\";\n  }\n\n  @SuppressWarnings({\"ControlFlowStatementWithoutBraces\", \"MagicNumber\"})\n  @Override","sourceCodeStart":31,"sourceCodeEnd":67,"githubUrl":"https://github.com/languagetool-org/languagetool/blob/2e990059ce67d5e2a0f7f7ca5d31160c6709df4b/languagetool-language-modules/nl/src/main/java/org/languagetool/rules/nl/DateCheckFilter.java#L31-L67","documentation":"The Dutch DateCheckFilter maps Dutch weekday tokens (abbreviations ma/di/wo/do/vr/za and full names maandag…zaterdag) to Calendar constants. It throws this RuntimeException when the day string matches none of them. Notably there is no Sunday ('zo'/'zondag') branch, so any Sunday token reaching this method throws.","triggerScenarios":"A Dutch date rule matches 'zondag' or 'zo' and calls getDayOfWeek, which has no Sunday mapping; or the token differs from the exact equals() strings (case differences, extra characters).","commonSituations":"Dates in text containing Sunday matched by the rule; weekday abbreviations in different case since the filter uses exact equals, not startsWith.","solutions":["Add Sunday mapping: if (day.equals(\"zo\") || day.equals(\"zondag\")) return Calendar.SUNDAY;","Check the message's day string and make sure the caller passes the lowercased, trimmed token","Update the rule regex so it only emits tokens covered by the mapping"],"exampleFix":"// before\nif (day.equals(\"za\") || day.equals(\"zaterdag\")) return Calendar.SATURDAY;\nthrow new RuntimeException(\"Could not find day of week for '\" + dayStr + \"'\");\n// after\nif (day.equals(\"za\") || day.equals(\"zaterdag\")) return Calendar.SATURDAY;\nif (day.equals(\"zo\") || day.equals(\"zondag\")) return Calendar.SUNDAY;\nthrow new RuntimeException(\"Could not find day of week for '\" + dayStr + \"'\");","handlingStrategy":"validation","validationCode":"Set<String> known = Set.of(\"ma\",\"di\",\"wo\",\"do\",\"vr\",\"za\",\"maandag\",\"dinsdag\",\"woensdag\",\"donderdag\",\"vrijdag\",\"zaterdag\");\nif (!known.contains(dayStr.toLowerCase())) throw new IllegalArgumentException(\"Unrecognized Dutch weekday: \" + dayStr);","typeGuard":"boolean isDutchWeekday(String s) { String d = s == null ? \"\" : s.toLowerCase(); return Set.of(\"ma\",\"di\",\"wo\",\"do\",\"vr\",\"za\",\"maandag\",\"dinsdag\",\"woensdag\",\"donderdag\",\"vrijdag\",\"zaterdag\").contains(d); }","tryCatchPattern":"try { day = filter.getDayOfWeek(dayStr); } catch (RuntimeException e) { log.debug(\"Skipping unmatched Dutch weekday {}\", dayStr); }","preventionTips":["Add Sunday ('zo'/'zondag') to tests — it is missing today","Remember exact equals() matching: pass exact lowercase full names or the two-letter abbreviations only","Keep rule regex and mapping synchronized with a unit test"],"tags":["java","nlp","grammar-rules","date-validation"],"backgroundTag":"invalid-enum-value","analyzedSha":"2e990059ce67d5e2a0f7f7ca5d31160c6709df4b","analyzedAt":"2026-09-06T09:20:17.015Z","contentChangedAt":"2026-09-06T09:20:17.015Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}