Skip to content

Commit

Permalink
Add ElasticSearch data models and mapping strategies for dolly search…
Browse files Browse the repository at this point in the history
… service
  • Loading branch information
krharum committed Mar 3, 2025
1 parent 6e11e71 commit cd90124
Show file tree
Hide file tree
Showing 11 changed files with 308 additions and 99 deletions.
25 changes: 0 additions & 25 deletions .github/workflows/app.arbeidsforhold-service.yml

This file was deleted.

This file was deleted.

24 changes: 0 additions & 24 deletions .github/workflows/app.generer-synt-amelding-service.yml

This file was deleted.

26 changes: 0 additions & 26 deletions .github/workflows/app.synt-sykemelding-api.yml

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package no.nav.testnav.dollysearchservice.mapper;

import ma.glasnost.orika.MapperFactory;

@FunctionalInterface
public interface MappingStrategy {

/**
* A callback for registering criteria on the provided {@link MapperFactory}.
* <p/>
* <pre>{@code
*
* @Override public void register(MapperFactory factory) {
* factory.registerMapper(arbeidsfordelingToRestArbeidsfordeling());
* }
* }</pre>
*/
void register(MapperFactory factory);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package no.nav.testnav.dollysearchservice.mapper;

import ma.glasnost.orika.CustomMapper;
import ma.glasnost.orika.MapperFactory;
import ma.glasnost.orika.MappingContext;
import no.nav.testnav.dollysearchservice.dto.SearchInternalResponse;
import no.nav.testnav.libs.data.dollysearchservice.v1.SearchResponse;
import org.springframework.stereotype.Component;

@Component
public class OpenSearchResponseMappingStrategy implements MappingStrategy {

@Override
public void register(MapperFactory factory) {
factory.classMap(SearchInternalResponse.class, SearchResponse.class)
.customize(new CustomMapper<>() {
@Override
public void mapAtoB(SearchInternalResponse searchInternalResponse, SearchResponse searchResponse, MappingContext context) {

searchResponse.setTotalHits(searchInternalResponse.getTotalHits());
searchResponse.setTook(searchInternalResponse.getTook());
searchResponse.setSide(searchInternalResponse.getSide());
searchResponse.setAntall(searchInternalResponse.getAntall());
searchResponse.setSeed(searchInternalResponse.getSeed());
searchResponse.setPersoner(searchInternalResponse.getPersoner());
searchResponse.setError(searchInternalResponse.getError());
}
})
.register();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
package no.nav.testnav.libs.data.dollysearchservice.v1;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import no.nav.testnav.libs.data.arbeidsplassencv.v1.ArbeidsplassenCVDTO;
import no.nav.testnav.libs.dto.inntektsmeldinggeneratorservice.v1.rs.RsInntektsmelding;
import no.nav.testnav.libs.dto.skattekortservice.v1.SkattekortRequestDTO;
import no.nav.testnav.libs.dto.yrkesskade.v1.YrkesskadeRequest;
import org.springframework.data.annotation.Id;
import org.springframework.data.annotation.Transient;
import org.springframework.data.domain.Persistable;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;

import java.util.ArrayList;
import java.util.List;

import static java.util.Objects.isNull;

@Document(indexName = "#{@environment.getProperty('open.search.index')}")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(JsonInclude.Include.NON_EMPTY)
public class ElasticBestilling implements Persistable<Long> {

@Id
private Long id;
@Field
private Object krrstub;
@Field
private Object fullmakt;
@Field
private Object medl;
@Field
private Object instdata;
@Field
private Object aareg;
@Field
private Object sigrunstub;
@Field
private Object sigrunstubPensjonsgivende;
@Field
private Object inntektstub;
@Field
private Object arenaforvalter;
@Field
private Object udistub;
@Field
private Object pensjonforvalter;
@Field
private RsInntektsmelding inntektsmelding;
@Field
private Object brregstub;
@Field
private Object dokarkiv;
@Field
private Object histark;
@Field
private Object sykemelding;
@Field
private Object bankkonto;
@Field
private Object skjerming;
@Field
private ArbeidsplassenCVDTO arbeidsplassenCV;
@Field
private SkattekortRequestDTO skattekort;
@Field
private List<YrkesskadeRequest> yrkesskader;
@Field
private Object arbeidssoekerregisteret;
@Field
private List<String> identer;
@Transient
@JsonIgnore
private boolean ignore;

@Override
@JsonIgnore
@Transient
public boolean isNew() {

return false;
}

public List<String> getIdenter() {
if (isNull(identer)) {
identer = new ArrayList<>();
}
return identer;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package no.nav.testnav.libs.data.dollysearchservice.v1;

import lombok.Getter;

@Getter
public enum ElasticTyper {

AAREG("Arbeidsgiver/arbeidstaker-register (AAREG)"),
ARBEIDSPLASSENCV("Arbeidsplassen CV"),
ARBEIDSSOEKERREGISTERET("Arbeidssøkerregisteret"),
ARENA_AAP("Arena AAP ytelse"),
ARENA_AAP115("Arena AAP115 rettighet"),
ARENA_DAGP("Arena dagpenger"),
BANKKONTO("Bankkontoregister"),
BANKKONTO_NORGE("Bankkonto i Norge"),
BANKKONTO_UTLAND("Bankkonto i utlandet"),
BRREGSTUB("Brønnøysundregistrene (BRREGSTUB)"),
DOKARKIV("Dokumentarkiv (JOARK)"),
FULLMAKT("Fullmakt (Representasjon)"),
HISTARK("Historisk arkiv (HISTARK)"),
INNTK("Inntektskomponenten/stub (INNTK)"),
INNTKMELD("Inntektsmelding (ALTINN/JOARK)"),
INST("Institusjonsopphold (INST2)"),
KRRSTUB("Kontakt- og reservasjonsregister-stub"),
MEDL("Medlemskap (MEDL)"),
PEN_AFP_OFFENTLIG("Pensjon - AFP offentlig"),
PEN_AP("Pensjon - Alderspensjon (AP)"),
PEN_INNTEKT("Pensjon - Pensjonsinntekt/opptjening"),
PEN_PENSJONSAVTALE("Pensjon - Pensjonsavtaler"),
PEN_TP("Pensjon - Tjenestepensjon (TP)"),
PEN_UT("Pensjon - Uføretrygd (UT)"),
SIGRUN_LIGNET("Sigrunstub - Lignet skatteinntekt"),
SIGRUN_PENSJONSGIVENDE("Sigrunstub - Pensjonsgivende inntekt"),
SKATTEKORT("Skattekort (SOKOS)"),
SKJERMING("Skjermingsregisteret"),
SYKEMELDING("Sykemelding"),
UDISTUB("Udistub - Utlendingsdirektoratet"),
YRKESSKADE("Yrkesskade");

private final String beskrivelse;

ElasticTyper(String beskrivelse) {
this.beskrivelse = beskrivelse;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
package no.nav.testnav.libs.data.dollysearchservice.v1;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import no.nav.testnav.libs.data.pdlforvalter.v1.AdressebeskyttelseDTO;
import no.nav.testnav.libs.data.pdlforvalter.v1.Identtype;
import no.nav.testnav.libs.data.pdlforvalter.v1.KjoennDTO;
import no.nav.testnav.libs.data.pdlforvalter.v1.SivilstandDTO;

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor(force = true)
public class PersonRequest {

private Identtype identtype;
private KjoennDTO.Kjoenn kjoenn;
private Integer alderFom;
private Integer alderTom;
private SivilstandDTO.Sivilstand sivilstand;

private Boolean harBarn;
private Boolean harForeldre;
private Boolean harDoedfoedtBarn;
private Boolean harForeldreAnsvar;
private Boolean harVerge;
private Boolean harDoedsfall;
private Boolean harInnflytting;
private Boolean harUtflytting;
private Boolean harKontaktinformasjonForDoedsbo;
private Boolean harUtenlandskIdentifikasjonsnummer;
private Boolean harFalskIdentitet;
private Boolean harTilrettelagtKommunikasjon;
private Boolean harSikkerhetstiltak;
private Boolean harOpphold;
@Schema(description = "landkode")
private String statsborgerskap;
private Boolean harNyIdentitet;

private AdresseRequest adresse;

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor(force = true)
public static class AdresseRequest {

private AdressebeskyttelseDTO.AdresseBeskyttelse addressebeskyttelse;

private String kommunenummer;
private String postnummer;
private String bydelsnummer;

private Boolean harBydelsnummer;
private Boolean harUtenlandsadresse;
private Boolean harMatrikkeladresse;
private Boolean harUkjentAdresse;
private Boolean harDeltBosted;

private Boolean harBostedsadresse;
private Boolean harKontaktadresse;
private Boolean harOppholdsadresse;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package no.nav.testnav.libs.data.dollysearchservice.v1;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SearchRequest {

@Schema(description = "Sidenummer")
private Integer side;
@Schema(description = "Antall resultater per side")
private Integer antall;
@Schema(description = "Seed for paginering")
private Integer seed;

@Schema(description = "Persondetaljer")
private PersonRequest personRequest;
}
Loading

0 comments on commit cd90124

Please sign in to comment.