From ca1748f607c9c46988399a8045118958d5ef0ec0 Mon Sep 17 00:00:00 2001 From: Kian Kwa Date: Mon, 31 Jul 2023 12:15:34 +0100 Subject: [PATCH] Add list type friendly name --- build.gradle | 2 +- .../pip/model/publication/ListType.java | 18 ++++++-- .../publication/helpers/ListTypeHelper.java | 26 ++++++++++++ .../pip/model/publication/ListTypeTest.java | 41 +++++++++++++++++++ 4 files changed, 82 insertions(+), 5 deletions(-) create mode 100644 src/main/java/uk/gov/hmcts/reform/pip/model/publication/helpers/ListTypeHelper.java create mode 100644 src/test/java/uk/gov/hmcts/reform/pip/model/publication/ListTypeTest.java diff --git a/build.gradle b/build.gradle index a9617d3..898fa1b 100644 --- a/build.gradle +++ b/build.gradle @@ -20,7 +20,7 @@ publishing { } group = 'com.github.hmcts' -version = '2.1.2' +version = '2.1.3' java { toolchain { diff --git a/src/main/java/uk/gov/hmcts/reform/pip/model/publication/ListType.java b/src/main/java/uk/gov/hmcts/reform/pip/model/publication/ListType.java index 37405ff..45a25ec 100644 --- a/src/main/java/uk/gov/hmcts/reform/pip/model/publication/ListType.java +++ b/src/main/java/uk/gov/hmcts/reform/pip/model/publication/ListType.java @@ -5,6 +5,7 @@ import uk.gov.hmcts.reform.pip.model.account.Roles; import uk.gov.hmcts.reform.pip.model.account.UserProvenances; import uk.gov.hmcts.reform.pip.model.location.LocationType; +import uk.gov.hmcts.reform.pip.model.publication.helpers.ListTypeHelper; import java.util.List; @@ -25,8 +26,8 @@ @AllArgsConstructor public enum ListType { SJP_PUBLIC_LIST(NATIONAL, PI_AAD, ALL_VERIFIED_THIRD_PARTY_PRESS_ROLES), - SJP_PRESS_LIST(NATIONAL, PI_AAD, ALL_VERIFIED_THIRD_PARTY_PRESS_ROLES), - SJP_DELTA_PRESS_LIST(NATIONAL, PI_AAD, ALL_VERIFIED_THIRD_PARTY_PRESS_ROLES, SJP_PRESS_LIST), + SJP_PRESS_LIST(NATIONAL, PI_AAD, ALL_VERIFIED_THIRD_PARTY_PRESS_ROLES, null, "SJP Press List (Full list)"), + SJP_DELTA_PRESS_LIST(NATIONAL, PI_AAD, ALL_VERIFIED_THIRD_PARTY_PRESS_ROLES, SJP_PRESS_LIST, "SJP Press List (New Cases)"), SJP_PRESS_REGISTER(NATIONAL, PI_AAD, ALL_VERIFIED_THIRD_PARTY_PRESS_ROLES), CROWN_DAILY_LIST(VENUE, CRIME_IDAM, ALL_VERIFIED_THIRD_PARTY_CRIME_ROLES), CROWN_FIRM_LIST(VENUE, CRIME_IDAM, ALL_VERIFIED_THIRD_PARTY_CRIME_ROLES), @@ -40,8 +41,8 @@ public enum ListType { ET_FORTNIGHTLY_PRESS_LIST(OWNING_HEARING_LOCATION, CFT_IDAM, ALL_VERIFIED_THIRD_PARTY_CFT_ROLES), ET_DAILY_LIST(OWNING_HEARING_LOCATION, CFT_IDAM, ALL_VERIFIED_THIRD_PARTY_CFT_ROLES), SSCS_DAILY_LIST(OWNING_HEARING_LOCATION, CFT_IDAM, ALL_VERIFIED_THIRD_PARTY_CFT_ROLES), - SSCS_DAILY_LIST_ADDITIONAL_HEARINGS(OWNING_HEARING_LOCATION, CFT_IDAM, - ALL_VERIFIED_THIRD_PARTY_CFT_ROLES, SSCS_DAILY_LIST), + SSCS_DAILY_LIST_ADDITIONAL_HEARINGS(OWNING_HEARING_LOCATION, CFT_IDAM, ALL_VERIFIED_THIRD_PARTY_CFT_ROLES, + SSCS_DAILY_LIST, "SSCS Daily List - Additional Hearings"), IAC_DAILY_LIST(VENUE, CFT_IDAM, ALL_VERIFIED_THIRD_PARTY_CFT_ROLES), CARE_STANDARDS_LIST(NATIONAL, CFT_IDAM, ALL_VERIFIED_THIRD_PARTY_CFT_ROLES), PRIMARY_HEALTH_LIST(NATIONAL, CFT_IDAM, ALL_VERIFIED_THIRD_PARTY_CFT_ROLES); @@ -66,9 +67,18 @@ public enum ListType { */ private ListType parentListType; + /** + * Friendly name of the list if it is different to the list type name. + */ + private String friendlyName; + ListType(LocationType listLocationLevel, UserProvenances allowedProvenance, List allowedThirdPartyRoles) { this.listLocationLevel = listLocationLevel; this.allowedProvenance = allowedProvenance; this.allowedThirdPartyRoles = allowedThirdPartyRoles; } + + public String getFriendlyName() { + return friendlyName == null ? ListTypeHelper.buildFriendlyName(this) : friendlyName; + } } diff --git a/src/main/java/uk/gov/hmcts/reform/pip/model/publication/helpers/ListTypeHelper.java b/src/main/java/uk/gov/hmcts/reform/pip/model/publication/helpers/ListTypeHelper.java new file mode 100644 index 0000000..d676f9c --- /dev/null +++ b/src/main/java/uk/gov/hmcts/reform/pip/model/publication/helpers/ListTypeHelper.java @@ -0,0 +1,26 @@ +package uk.gov.hmcts.reform.pip.model.publication.helpers; + +import org.apache.commons.text.WordUtils; +import uk.gov.hmcts.reform.pip.model.publication.ListType; + +import java.util.Arrays; +import java.util.Locale; +import java.util.Set; +import java.util.stream.Collectors; + +public final class ListTypeHelper { + private static final Set ACRONYMS = Set.of("COP", "ET", "IAC", "SSCS", "SJP"); + private static final Set CONJUNCTIONS = Set.of("and"); + + private ListTypeHelper() { + } + + public static String buildFriendlyName(ListType listType) { + return Arrays.stream(WordUtils.capitalizeFully(listType.name(), '_').split("_")) + .map(word -> ACRONYMS.contains(word.toUpperCase(Locale.ENGLISH)) + ? word.toUpperCase(Locale.ENGLISH) : word) + .map(word -> CONJUNCTIONS.contains(word.toLowerCase(Locale.ENGLISH)) + ? word.toLowerCase(Locale.ENGLISH) : word) + .collect(Collectors.joining(" ")); + } +} diff --git a/src/test/java/uk/gov/hmcts/reform/pip/model/publication/ListTypeTest.java b/src/test/java/uk/gov/hmcts/reform/pip/model/publication/ListTypeTest.java new file mode 100644 index 0000000..aa247be --- /dev/null +++ b/src/test/java/uk/gov/hmcts/reform/pip/model/publication/ListTypeTest.java @@ -0,0 +1,41 @@ +package uk.gov.hmcts.reform.pip.model.publication; + +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.Assertions.assertThat; +import static uk.gov.hmcts.reform.pip.model.publication.ListType.CIVIL_AND_FAMILY_DAILY_CAUSE_LIST; +import static uk.gov.hmcts.reform.pip.model.publication.ListType.COP_DAILY_CAUSE_LIST; +import static uk.gov.hmcts.reform.pip.model.publication.ListType.MAGISTRATES_PUBLIC_LIST; +import static uk.gov.hmcts.reform.pip.model.publication.ListType.SSCS_DAILY_LIST_ADDITIONAL_HEARINGS; + +class ListTypeTest { + private static final String LIST_TYPE_NAME_MESSAGE = "List type name does not match"; + + @Test + void testStandardListTypeFriendlyName() { + assertThat(MAGISTRATES_PUBLIC_LIST.getFriendlyName()) + .as(LIST_TYPE_NAME_MESSAGE) + .isEqualTo("Magistrates Public List"); + } + + @Test + void testListTypeWithAcronymFriendlyName() { + assertThat(COP_DAILY_CAUSE_LIST.getFriendlyName()) + .as(LIST_TYPE_NAME_MESSAGE) + .isEqualTo("COP Daily Cause List"); + } + + @Test + void testListTypeWithConjunctionFriendlyName() { + assertThat(CIVIL_AND_FAMILY_DAILY_CAUSE_LIST.getFriendlyName()) + .as(LIST_TYPE_NAME_MESSAGE) + .isEqualTo("Civil and Family Daily Cause List"); + } + + @Test + void testListTypeWithCustomFriendlyName() { + assertThat(SSCS_DAILY_LIST_ADDITIONAL_HEARINGS.getFriendlyName()) + .as(LIST_TYPE_NAME_MESSAGE) + .isEqualTo("SSCS Daily List - Additional Hearings"); + } +}