Skip to content

Commit

Permalink
Lagt til flere opplysningstyper #deploy-tenor-search-service
Browse files Browse the repository at this point in the history
  • Loading branch information
krharum committed Jan 10, 2024
1 parent f519505 commit ef4fd63
Show file tree
Hide file tree
Showing 2 changed files with 92 additions and 68 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,17 +16,38 @@ public class TenorRequest {
public enum IdentifikatorType {FNR, DNR, FNR_TIDLIGERE_DNR}
public enum Kjoenn {Mann, Kvinne}
public enum Roller {DAGLIG_LEDER}
public enum Personstatus {Bosatt, Doed, Forsvunnet, Foedselsregistrert, IkkeBosatt, Inaktiv, Midlertidig, Opphørt, Utflyttet}
public enum Sivilstand {EnkeEllerEnkemann, Gift, GjenlevendePartner, RegistrertPartner, Separert, SeparertPartner, Skilt, SkiltPartner, Ugift, Uoppgitt}
public enum Personstatus {Bosatt, Doed, Forsvunnet, Foedselsregistrert, IkkeBosatt, Inaktiv, Midlertidig, Opphoert, Utflyttet}
public enum Sivilstatus {EnkeEllerEnkemann, Gift, GjenlevendePartner, RegistrertPartner, Separert, SeparertPartner, Skilt, SkiltPartner, Ugift, Uoppgitt}
public enum UtenlandskPersonIdentifikasjon{UtenlandskIdentifikasjonsnummer, TaxIdentificationNumber, SocialSecurityNumber, UtlendingsmyndighetenesIdentifikasjonsnummer}
public enum IdentitetsgrunnlagStatus {IkkeKontrollert, IngenStatus, Kontrollert}
public enum Adressebeskyttelse {Fortrolig, StrengtFortrolig}


private List<Roller> roller;

private IdentifikatorType identifikatorType;
private DatoIntervall foedselsdato;
private DatoIntervall doedsdato;
private Kjoenn kjoenn;
public Personstatus personstatus;
public Sivilstand sivilstand;
private Personstatus personstatus;
private Sivilstatus sivilstatus;
private List<UtenlandskPersonIdentifikasjon> utenlandskPersonIdentifikasjon;
private IdentitetsgrunnlagStatus identitetsgrunnlagStatus;
private Adressebeskyttelse adressebeskyttelse;
private Boolean legitimasjonsdokument;
private Boolean falskIdentitet;
private Boolean norskStatsborgerskap;
private Boolean flereStatsborgerskap;
private Navn navn;


public List<UtenlandskPersonIdentifikasjon> getUtenlandskPersonIdentifikasjon() {

if (isNull(utenlandskPersonIdentifikasjon)) {
utenlandskPersonIdentifikasjon = new ArrayList<>();
}
return utenlandskPersonIdentifikasjon;
}

public List<Roller> getRoller() {

Expand All @@ -45,4 +66,22 @@ public static class DatoIntervall {
private LocalDate fra;
private LocalDate til;
}

@Data
@NoArgsConstructor
public static class Navn {

private NavnLengde navnLengde;
private Boolean flereFornavn;
private Boolean harMellomnavn;
private Boolean navnSpesialtegn;
}

@Data
@NoArgsConstructor
public static class NavnLengde {

private Integer fraOgMed;
private Integer tilOgMed;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,11 @@
import reactor.core.publisher.Mono;

import java.util.List;
import java.util.stream.Collectors;

import static java.util.Objects.isNull;
import static java.util.Objects.nonNull;
import static org.apache.commons.lang3.BooleanUtils.isNotTrue;
import static org.apache.commons.lang3.StringUtils.isNotBlank;

@Service
Expand All @@ -25,91 +28,73 @@ public Mono<TenorResponse> getTestdata(String testDataQuery) {

public Mono<TenorResponse> getTestdata(TenorRequest searchData) {

var builder = new StringBuilder();
builder.append(getFoedselsdato(searchData.getFoedselsdato()));
builder.append(getDoedsdato(searchData.getDoedsdato()));
builder.append(getIdentifikatorType(searchData.getIdentifikatorType()));
builder.append(getKjoenn(searchData.getKjoenn()));
builder.append(getPersonstatus(searchData.getPersonstatus()));
builder.append(getSivilstand(searchData.getSivilstand()));

var builder = new StringBuilder()
.append(convertDatoer("foedselsdato", searchData.getFoedselsdato()))
.append(convertDatoer("doedsdato", searchData.getDoedsdato()))
.append(getIdentifikatorType(searchData.getIdentifikatorType()))
.append(convertEnum("kjoenn", searchData.getKjoenn()))
.append(convertEnum("personstatus", searchData.getPersonstatus()))
.append(convertEnum("sivilstatus", searchData.getSivilstatus()))
.append(getUtenlandskPersonidentifikasjon(searchData.getUtenlandskPersonIdentifikasjon()))
.append(convertEnum("identitetsgrunnlagStatus", searchData.getIdentitetsgrunnlagStatus()))
.append(convertEnum("adressebeskyttelse", searchData.getAdressebeskyttelse()))
.append(convertBoolean("legitimasjonsdokument", searchData.getLegitimasjonsdokument()))
.append(convertBoolean("falskIdentitet", searchData.getFalskIdentitet()))
.append(convertBoolean("norskStatsborgerskap", searchData.getNorskStatsborgerskap()))
.append(convertBoolean("flereStatsborgerskap", searchData.getFlereStatsborgerskap()));
if (nonNull(searchData.getNavn())) {
builder.append(convertBoolean("flereFornavn", searchData.getNavn().getFlereFornavn()))
.append(getNavnLengde(searchData.getNavn().getNavnLengde()))
.append(getHarMellomnavn(searchData.getNavn().getHarMellomnavn()))
.append(convertBoolean("navnSpesialtegn", searchData.getNavn().getNavnSpesialtegn()));
}

builder.append(getRoller(searchData.getRoller()));

return tenorClient.getTestdata(!builder.isEmpty() ? builder.substring(5) : "");
}

private String getRoller(List<TenorRequest.Roller> roller) {
private String getHarMellomnavn(Boolean harMellomnavn) {

return (roller.isEmpty()) ? "" : "+and+tenorRelasjoner.brreg-er-fr:{dagligLeder:*}";
return isNotTrue(harMellomnavn) ? "" : "+and+harMellomnavn:*";
}

private String getSivilstand(TenorRequest.Sivilstand sivilstand) {

if (isNull(sivilstand)) {
return "";
}

return "+and+sivilstand:" + switch (sivilstand) {
case EnkeEllerEnkemann -> "enkeEllerEnkemann";
case Gift -> "gift";
case GjenlevendePartner -> "gjenlevendePartner";
case RegistrertPartner -> "registrertPartner";
case Separert -> "separert";
case SeparertPartner -> "separertPartner";
case Skilt -> "skilt";
case SkiltPartner -> "skiltPartner";
case Ugift -> "ugift";
case Uoppgitt -> "uoppgitt";
};
}
private String getNavnLengde(TenorRequest.NavnLengde navnLengde) {

private String getPersonstatus(TenorRequest.Personstatus personstatus) {

if (isNull(personstatus)) {
return "";
}

return "+and+personstatus:" + switch (personstatus) {
case Bosatt -> "bosatt";
case Doed -> "doed";
case Forsvunnet -> "forsvunnet";
case Foedselsregistrert -> "foedselsregistrert";
case IkkeBosatt -> "ikkeBosatt";
case Inaktiv -> "inaktiv";
case Midlertidig -> "midlertidig";
case Opphørt -> "opphørt";
case Utflyttet -> "utflyttet";
};
return isNull(navnLengde) ? "" : "+and+navnLengde:[%s+to+%s]"
.formatted(isNull(navnLengde.getFraOgMed()) ? "*" : navnLengde.getFraOgMed(),
isNull(navnLengde.getTilOgMed()) ? "*" : navnLengde.getTilOgMed());
}

private String getKjoenn(TenorRequest.Kjoenn kjoenn) {
private String convertBoolean(String booleanNavn, Boolean booleanVerdi) {

return isNull(booleanVerdi) ? "" : "+and+%s:%s".formatted(booleanNavn, booleanVerdi);
}

if (isNull(kjoenn)) {
return "";
}
private String getUtenlandskPersonidentifikasjon(List<TenorRequest.UtenlandskPersonIdentifikasjon> utenlandskPersonIdentifikasjon) {

return "+and+kjoenn:" + switch (kjoenn) {
case Mann -> "mann";
case Kvinne -> "kvinne";
};
return (utenlandskPersonIdentifikasjon.isEmpty()) ? "" : "+data+utenlandskPersonidentifikasjon:(%s)"
.formatted(utenlandskPersonIdentifikasjon.stream()
.map(Enum::name)
.collect(Collectors.joining("+and+")));
}

private String getFoedselsdato(TenorRequest.DatoIntervall foedselsdato) {
private String getRoller(List<TenorRequest.Roller> roller) {

if (isNull(foedselsdato)) {
return "";
}
return (roller.isEmpty()) ? "" : "+and+tenorRelasjoner.brreg-er-fr:{dagligLeder:*}";
}

return "+and+foedselsdato:[" + foedselsdato.getFra() + "+to+" + foedselsdato.getTil() + "]";
private String convertEnum(String enumNavn, Enum<?> enumVerdi) {

return isNull(enumVerdi) ? "" : "+and+%s:%s%s".formatted(enumNavn,
enumVerdi.name().substring(0, 1).toUpperCase(),
enumVerdi.name().substring(1));
}
private String getDoedsdato(TenorRequest.DatoIntervall doedsdato) {

if (isNull(doedsdato)) {
return "";
}
private String convertDatoer(String datoNavn, TenorRequest.DatoIntervall datoIntervall) {

return "+and+doedsdato:[" + doedsdato.getFra() + "+to+" + doedsdato.getTil() + "]";
return isNull(datoIntervall) ? "" :
"+and+%s:[%s+to+%s]".formatted(datoNavn, datoIntervall.getFra(), datoIntervall.getTil());
}

private String getIdentifikatorType(TenorRequest.IdentifikatorType identifikatorType) {
Expand Down

0 comments on commit ef4fd63

Please sign in to comment.