diff --git a/api-commons/src/main/java/no/digipost/api/representations/Organisasjonsnummer.java b/api-commons/src/main/java/no/digipost/api/representations/Organisasjonsnummer.java index 155e81b..93845be 100644 --- a/api-commons/src/main/java/no/digipost/api/representations/Organisasjonsnummer.java +++ b/api-commons/src/main/java/no/digipost/api/representations/Organisasjonsnummer.java @@ -20,14 +20,13 @@ public final class Organisasjonsnummer { static final String COUNTRY_CODE_ORGANIZATION_NUMBER_NORWAY_NEW = "0192"; private static final Pattern ORGANIZATION_NUMBER_PATTERN = Pattern.compile("^((" + COUNTRY_CODE_ORGANIZATION_NUMBER_NORWAY_OLD + "|" + COUNTRY_CODE_ORGANIZATION_NUMBER_NORWAY_NEW + "):)?([0-9]{9})$"); private final String organisasjonsnummer; - private final String landkode; + private final Optional landkode; private Organisasjonsnummer(MatchResult matchedOrganisasjonsnummer) { int groupOfOrganizationNumber = matchedOrganisasjonsnummer.groupCount(); this.organisasjonsnummer = matchedOrganisasjonsnummer.group(groupOfOrganizationNumber); - this.landkode = Optional.ofNullable(matchedOrganisasjonsnummer.group(groupOfOrganizationNumber - 1)) - .orElse(COUNTRY_CODE_ORGANIZATION_NUMBER_NORWAY_OLD); + this.landkode = Optional.ofNullable(matchedOrganisasjonsnummer.group(groupOfOrganizationNumber - 1)); } public static boolean erGyldig(String organisasjonsnummer) { @@ -58,11 +57,13 @@ public String getOrganisasjonsnummer() { } public String getOrganisasjonsnummerMedLandkode() { - return landkode + ":" + organisasjonsnummer; + return landkode.orElse(COUNTRY_CODE_ORGANIZATION_NUMBER_NORWAY_OLD) + ":" + organisasjonsnummer; } public boolean er(String organisasjonsnummerString) { - return hvisGyldig(organisasjonsnummerString).filter(this::equals).isPresent(); + return hvisGyldig(organisasjonsnummerString) + .filter(orgnr -> orgnr.landkode.isPresent() && this.landkode.isPresent() ? this.equals(orgnr) : this.organisasjonsnummer.equals(orgnr.organisasjonsnummer)) + .isPresent(); } public boolean erEnAv(Organisasjonsnummer... kandidater) { diff --git a/api-commons/src/test/java/no/digipost/api/representations/OrganisasjonsnummerTest.java b/api-commons/src/test/java/no/digipost/api/representations/OrganisasjonsnummerTest.java index 38a1fa9..7d7281a 100644 --- a/api-commons/src/test/java/no/digipost/api/representations/OrganisasjonsnummerTest.java +++ b/api-commons/src/test/java/no/digipost/api/representations/OrganisasjonsnummerTest.java @@ -107,6 +107,12 @@ public void evaluates_string_with_or_without_authoroty_part_as_same() { assertTrue(organisasjonsnummer.er(organisasjonsnummer.getOrganisasjonsnummerMedLandkode())); } + @Test + public void without_authority_part_is_Same_as_with_authority_part() { + Organisasjonsnummer organisasjonsnummer = Organisasjonsnummer.of("0192:984661185"); + assertTrue(organisasjonsnummer.er(organisasjonsnummer.getOrganisasjonsnummer())); + } + @Test public void evaluates_other_strings_as_not_same() { Organisasjonsnummer organisasjonsnummer = Organisasjonsnummer.of("984661185");