Skip to content

Commit

Permalink
Legger til orphanRemoval på OppgaveFiltrering entitet (#2073)
Browse files Browse the repository at this point in the history
  • Loading branch information
dijjal authored Apr 13, 2024
1 parent ca10b21 commit ade1f4b
Show file tree
Hide file tree
Showing 12 changed files with 104 additions and 140 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@
import no.nav.foreldrepenger.los.oppgave.OppgaveRepository;
import no.nav.foreldrepenger.los.oppgavekø.FiltreringAndreKriterierType;
import no.nav.foreldrepenger.los.oppgavekø.FiltreringBehandlingType;
import no.nav.foreldrepenger.los.oppgavekø.FiltreringYtelseType;
import no.nav.foreldrepenger.los.oppgavekø.KøSortering;
import no.nav.foreldrepenger.los.oppgavekø.OppgaveFiltrering;
import no.nav.foreldrepenger.los.organisasjon.Avdeling;
Expand Down Expand Up @@ -84,53 +83,26 @@ public void endreFiltreringBehandlingType(Long oppgavefiltreringId, BehandlingTy
oppgaveRepository.refresh(filtre);
}

public void endreFiltreringYtelseType(Long oppgavefiltreringId, FagsakYtelseType fagsakYtelseType) {
public void endreFagsakYtelseType(Long oppgavefiltreringId, FagsakYtelseType fagsakYtelseType, boolean checked) {
var filter = hentFiltrering(oppgavefiltreringId);
// fjern gamle filtre
filter.getFiltreringYtelseTyper()
.stream()
.map(FiltreringYtelseType::getFagsakYtelseType)
.forEach(yt -> oppgaveRepository.slettFiltreringYtelseType(oppgavefiltreringId, yt));
if (fagsakYtelseType != null) {
// legg på eventuelle nye
oppgaveRepository.lagre(new FiltreringYtelseType(filter, fagsakYtelseType));
}
oppgaveRepository.refresh(filter);
}

public void endreFyt(Long oppgavefiltreringId, FagsakYtelseType fagsakYtelseType, boolean checked) {
var filter = hentFiltrering(oppgavefiltreringId);
filter.getFiltreringYtelseTyper()
.stream()
.filter(fyt -> fyt.getFagsakYtelseType().equals(fagsakYtelseType))
.findFirst()
.ifPresent(fyt -> oppgaveRepository.slettFiltreringYtelseType(oppgavefiltreringId, fagsakYtelseType));
filter.fjernFagsakYtelseType(fagsakYtelseType);
if (checked) {
oppgaveRepository.lagre(new FiltreringYtelseType(filter, fagsakYtelseType));
filter.leggTilFagsakYtelseType(fagsakYtelseType);
}
oppgaveRepository.refresh(filter);
}

public void endreFiltreringYtelseTyper(Long oppgavefiltreringId, List<FagsakYtelseType> fagsakYtelseType) {
LOG.info("Henter oppgavefiltreringId {}", oppgavefiltreringId);
var filter = hentFiltrering(oppgavefiltreringId);
filter.getFiltreringYtelseTyper()
.stream()
.map(FiltreringYtelseType::getFagsakYtelseType)
.forEach(yt -> oppgaveRepository.slettFiltreringYtelseType(oppgavefiltreringId, yt));
fagsakYtelseType.stream().map(yt -> new FiltreringYtelseType(filter, yt)).forEach(oppgaveRepository::lagre);
oppgaveRepository.lagre(filter);
}

public void endreFiltreringAndreKriterierType(Long oppgavefiltreringId,
AndreKriterierType andreKriterierType,
boolean checked,
boolean inkluder) {
oppgaveRepository.slettFiltreringAndreKriterierType(oppgavefiltreringId, andreKriterierType);
var filterSett = hentFiltrering(oppgavefiltreringId);
filterSett.fjernAndreKriterierType(andreKriterierType);
if (checked) {
oppgaveRepository.lagre(new FiltreringAndreKriterierType(filterSett, andreKriterierType, inkluder));
var kriterie = new FiltreringAndreKriterierType(filterSett, andreKriterierType, inkluder);
filterSett.leggTilAndreKriterierType(kriterie);
}
oppgaveRepository.refresh(filterSett);
oppgaveRepository.lagre(filterSett);
}

public void leggSaksbehandlerTilListe(Long oppgaveFiltreringId, String saksbehandlerIdent) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -313,8 +313,11 @@ public void oppdaterNavn(Long sakslisteId, String navn) {
}

public void slettListe(Long listeId) {
entityManager.remove(entityManager.find(OppgaveFiltrering.class, listeId));
var filtersett = entityManager.find(OppgaveFiltrering.class, listeId);
filtersett.tilbakestill();
entityManager.merge(filtersett);
entityManager.flush();
entityManager.remove(filtersett);
}

public void slettFiltreringBehandlingType(Long sakslisteId, BehandlingType behandlingType) {
Expand All @@ -325,22 +328,6 @@ public void slettFiltreringBehandlingType(Long sakslisteId, BehandlingType behan
.setParameter("behandlingType", behandlingType.getKode()).executeUpdate();
}

public void slettFiltreringYtelseType(Long sakslisteId, FagsakYtelseType fagsakYtelseType) {
entityManager.createNativeQuery("""
DELETE FROM FILTRERING_YTELSE_TYPE f
WHERE f.OPPGAVE_FILTRERING_ID = :oppgaveFiltreringId and f.FAGSAK_YTELSE_TYPE = :fagsakYtelseType
""").setParameter("oppgaveFiltreringId", sakslisteId)//$NON-NLS-1$ // NOSONAR
.setParameter("fagsakYtelseType", fagsakYtelseType.getKode()).executeUpdate();
}

public void slettFiltreringAndreKriterierType(Long oppgavefiltreringId, AndreKriterierType andreKriterierType) {
entityManager.createNativeQuery("""
DELETE FROM FILTRERING_ANDRE_KRITERIER f
WHERE f.OPPGAVE_FILTRERING_ID = :oppgaveFiltreringId and f.ANDRE_KRITERIER_TYPE = :andreKriterierType
""").setParameter("oppgaveFiltreringId", oppgavefiltreringId)//$NON-NLS-1$ // NOSONAR
.setParameter("andreKriterierType", andreKriterierType.getKode()).executeUpdate();
}

public <U extends BaseEntitet> void refresh(U entitet) {
// todo: unødvendig? managed objects vil antakelig refreshes?
entityManager.refresh(entitet);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@
import java.util.Optional;

import no.nav.foreldrepenger.los.oppgavekø.FiltreringAndreKriterierType;
import no.nav.foreldrepenger.los.oppgavekø.FiltreringBehandlingType;
import no.nav.foreldrepenger.los.oppgavekø.FiltreringYtelseType;
import no.nav.foreldrepenger.los.oppgavekø.KøSortering;
import no.nav.foreldrepenger.los.oppgavekø.OppgaveFiltrering;

import static java.util.function.Predicate.not;

public class Oppgavespørring {
private final KøSortering sortering;
private final Long enhetId;
Expand All @@ -29,8 +29,8 @@ public class Oppgavespørring {
public Oppgavespørring(OppgaveFiltrering oppgaveFiltrering) {
sortering = oppgaveFiltrering.getSortering();
enhetId = oppgaveFiltrering.getAvdeling().getId();
behandlingTyper = behandlingTypeFra(oppgaveFiltrering);
ytelseTyper = ytelseType(oppgaveFiltrering);
behandlingTyper = oppgaveFiltrering.getBehandlingTyper();
ytelseTyper = oppgaveFiltrering.getFagsakYtelseTyper();
inkluderAndreKriterierTyper = inkluderAndreKriterierTyperFra(oppgaveFiltrering);
ekskluderAndreKriterierTyper = ekskluderAndreKriterierTyperFra(oppgaveFiltrering);
erDynamiskPeriode = oppgaveFiltrering.getErDynamiskPeriode();
Expand Down Expand Up @@ -136,7 +136,7 @@ public Optional<Long> getAvgrenseTilOppgaveId() {
private List<AndreKriterierType> ekskluderAndreKriterierTyperFra(OppgaveFiltrering oppgaveFiltrering) {
return oppgaveFiltrering.getFiltreringAndreKriterierTyper()
.stream()
.filter(FiltreringAndreKriterierType::isEkskluder)
.filter(not(FiltreringAndreKriterierType::isInkluder))
.map(FiltreringAndreKriterierType::getAndreKriterierType)
.toList();
}
Expand All @@ -149,14 +149,6 @@ private List<AndreKriterierType> inkluderAndreKriterierTyperFra(OppgaveFiltrerin
.toList();
}

private List<FagsakYtelseType> ytelseType(OppgaveFiltrering oppgaveFiltrering) {
return oppgaveFiltrering.getFiltreringYtelseTyper().stream().map(FiltreringYtelseType::getFagsakYtelseType).toList();
}

private List<BehandlingType> behandlingTypeFra(OppgaveFiltrering oppgaveFiltrering) {
return oppgaveFiltrering.getFiltreringBehandlingTyper().stream().map(FiltreringBehandlingType::getBehandlingType).toList();
}

@Override
public String toString() {
return "Oppgavespørring{" + "sortering=" + sortering + ", enhetId=" + enhetId + ", behandlingTyper=" + behandlingTyper + ", ytelseTyper="
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,6 @@ public class FiltreringAndreKriterierType extends BaseEntitet {
@JoinColumn(name = "OPPGAVE_FILTRERING_ID", nullable = false)
private OppgaveFiltrering oppgaveFiltrering;

@Column(name = "OPPGAVE_FILTRERING_ID", updatable = false, insertable = false)
private Long oppgaveFiltreringId;

@Column(name = "ANDRE_KRITERIER_TYPE", updatable = false, insertable = false)
private String andreKriterier;

@Column(name = "ANDRE_KRITERIER_TYPE", nullable = false)
@Convert(converter = AndreKriterierType.KodeverdiConverter.class)
private AndreKriterierType andreKriterierType;
Expand All @@ -33,7 +27,7 @@ public class FiltreringAndreKriterierType extends BaseEntitet {
private boolean inkluder = true;

public FiltreringAndreKriterierType() {
//CDI
//hibernate
}

public FiltreringAndreKriterierType(OppgaveFiltrering oppgaveFiltrering, AndreKriterierType andreKriterierType, boolean inkluder) {
Expand All @@ -42,10 +36,6 @@ public FiltreringAndreKriterierType(OppgaveFiltrering oppgaveFiltrering, AndreKr
this.inkluder = inkluder;
}

public OppgaveFiltrering getOppgaveFiltrering() {
return oppgaveFiltrering;
}

public AndreKriterierType getAndreKriterierType() {
return andreKriterierType;
}
Expand All @@ -54,7 +44,4 @@ public boolean isInkluder() {
return inkluder;
}

public boolean isEkskluder() {
return !inkluder;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,6 @@ public class FiltreringBehandlingType extends BaseEntitet {
@JoinColumn(name = "OPPGAVE_FILTRERING_ID", nullable = false)
private OppgaveFiltrering oppgaveFiltrering;

@Column(name = "OPPGAVE_FILTRERING_ID", updatable = false, insertable = false)
private Long oppgaveFiltreringId;

@Column(name = "behandling_type", updatable = false, insertable = false)
private String behandlingTypeKode;

@Convert(converter = BehandlingType.KodeverdiConverter.class)
@Column(name = "BEHANDLING_TYPE")
private BehandlingType behandlingType;
Expand All @@ -43,10 +37,6 @@ public FiltreringBehandlingType(OppgaveFiltrering oppgaveFiltrering, BehandlingT
this.behandlingType = behandlingType;
}

public OppgaveFiltrering getOppgaveFiltrering() {
return oppgaveFiltrering;
}

public BehandlingType getBehandlingType() {
return behandlingType;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,6 @@ public class FiltreringYtelseType extends BaseEntitet {
@JoinColumn(name = "OPPGAVE_FILTRERING_ID", nullable = false)
private OppgaveFiltrering oppgaveFiltrering;

@Column(name = "OPPGAVE_FILTRERING_ID", updatable = false, insertable = false)
private Long oppgaveFiltreringId;

@Column(name = "FAGSAK_YTELSE_TYPE", updatable = false, insertable = false)
private String fagsakYtelseTypeKode;

@Convert(converter = FagsakYtelseType.KodeverdiConverter.class)
@Column(name = "FAGSAK_YTELSE_TYPE")
private FagsakYtelseType fagsakYtelseType;
Expand All @@ -43,10 +37,6 @@ public FiltreringYtelseType(OppgaveFiltrering oppgaveFiltrering, FagsakYtelseTyp
this.fagsakYtelseType = fagsakYtelseTypeKode;
}

public OppgaveFiltrering getOppgaveFiltrering() {
return oppgaveFiltrering;
}

public FagsakYtelseType getFagsakYtelseType() {
return fagsakYtelseType;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,11 @@
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import jakarta.persistence.CascadeType;
import jakarta.persistence.Column;
import jakarta.persistence.Convert;
import jakarta.persistence.Entity;
Expand All @@ -20,10 +23,14 @@
import jakarta.persistence.Table;

import no.nav.foreldrepenger.los.felles.BaseEntitet;
import no.nav.foreldrepenger.los.oppgave.AndreKriterierType;
import no.nav.foreldrepenger.los.oppgave.BehandlingType;
import no.nav.foreldrepenger.los.oppgave.FagsakYtelseType;
import no.nav.foreldrepenger.los.organisasjon.Avdeling;
import no.nav.foreldrepenger.los.organisasjon.Saksbehandler;
import no.nav.vedtak.felles.jpa.converters.BooleanToStringConverter;


@Entity(name = "OppgaveFiltrering")
@Table(name = "OPPGAVE_FILTRERING")
public class OppgaveFiltrering extends BaseEntitet {
Expand All @@ -40,13 +47,13 @@ public class OppgaveFiltrering extends BaseEntitet {
private KøSortering sortering;

@OneToMany(mappedBy = "oppgaveFiltrering")
private List<FiltreringBehandlingType> filtreringBehandlingTyper = new ArrayList<>();
private Set<FiltreringBehandlingType> filtreringBehandlingTyper = new HashSet<>();

@OneToMany(mappedBy = "oppgaveFiltrering")
private List<FiltreringYtelseType> filtreringYtelseTyper = new ArrayList<>();
@OneToMany(mappedBy = "oppgaveFiltrering", cascade = CascadeType.PERSIST, orphanRemoval = true)
private Set<FiltreringYtelseType> filtreringYtelseTyper = new HashSet<>();

@OneToMany(mappedBy = "oppgaveFiltrering")
private List<FiltreringAndreKriterierType> andreKriterierTyper = new ArrayList<>();
@OneToMany(mappedBy = "oppgaveFiltrering", cascade = CascadeType.PERSIST, orphanRemoval = true)
private Set<FiltreringAndreKriterierType> andreKriterierTyper = new HashSet<>();

@ManyToOne
@JoinColumn(name = "AVDELING_ID")
Expand Down Expand Up @@ -88,15 +95,19 @@ public String getNavn() {
}

public List<FiltreringBehandlingType> getFiltreringBehandlingTyper() {
return filtreringBehandlingTyper;
return filtreringBehandlingTyper.stream().toList();
}

public List<FiltreringYtelseType> getFiltreringYtelseTyper() {
return filtreringYtelseTyper;
public List<BehandlingType> getBehandlingTyper() {
return filtreringBehandlingTyper.stream().map(FiltreringBehandlingType::getBehandlingType).toList();
}

public List<FagsakYtelseType> getFagsakYtelseTyper() {
return filtreringYtelseTyper.stream().map(FiltreringYtelseType::getFagsakYtelseType).toList();
}

public List<FiltreringAndreKriterierType> getFiltreringAndreKriterierTyper() {
return andreKriterierTyper;
return andreKriterierTyper.stream().toList();
}

public Avdeling getAvdeling() {
Expand Down Expand Up @@ -127,10 +138,6 @@ public static OppgaveFiltrering nyTomOppgaveFiltrering(Avdeling avdeling) {
return new Builder().medAvdeling(avdeling).medNavn("Ny liste").medSortering(KøSortering.BEHANDLINGSFRIST).build();
}

public static OppgaveFiltrering.Builder builder() {
return new OppgaveFiltrering.Builder();
}

public List<Saksbehandler> getSaksbehandlere() {
return Collections.unmodifiableList(saksbehandlere);
}
Expand All @@ -141,11 +148,40 @@ public void leggTilSaksbehandler(Saksbehandler saksbehandler) {
}
}

public void leggTilAndreKriterierType(FiltreringAndreKriterierType filtreringAndreKriterierType) {
fjernAndreKriterierType(filtreringAndreKriterierType.getAndreKriterierType());
this.andreKriterierTyper.add(filtreringAndreKriterierType);
}

public void fjernAndreKriterierType(AndreKriterierType andreKriterierType) {
this.andreKriterierTyper.removeIf(akt -> akt.getAndreKriterierType() == andreKriterierType);
}

public void fjernSaksbehandler(Saksbehandler saksbehandler) {
saksbehandlere.remove(saksbehandler);
this.saksbehandlere.remove(saksbehandler);
}

public void tilbakestill() {
this.saksbehandlere.clear();
this.filtreringYtelseTyper.clear();
this.andreKriterierTyper.clear();
this.filtreringBehandlingTyper.clear();
}

public static OppgaveFiltrering.Builder builder() {
return new OppgaveFiltrering.Builder();
}

public void fjernFagsakYtelseType(FagsakYtelseType fagsakYtelseType) {
this.filtreringYtelseTyper.removeIf(yt -> yt.getFagsakYtelseType() == fagsakYtelseType);
}

public void leggTilFagsakYtelseType(FagsakYtelseType fagsakYtelseType) {
this.filtreringYtelseTyper.add(new FiltreringYtelseType(this, fagsakYtelseType));
}

public static class Builder {

private OppgaveFiltrering tempOppgaveFiltrering;

private Builder() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import java.math.BigDecimal;
import java.sql.Timestamp;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
import java.util.stream.Stream;

Expand Down Expand Up @@ -90,6 +89,20 @@ int slettUtdaterte() {
return deletedRows;
}

int slettLøseYtelseTyper() {
var query = entityManager.createNativeQuery("delete from FILTRERING_YTELSE_TYPE where oppgave_filtrering_id not in (select id from OPPGAVE_FILTRERING)");
int deletedRows = query.executeUpdate();
entityManager.flush();
return deletedRows;
}

int slettLøseBehandlingsTyper() {
var query = entityManager.createNativeQuery("delete from FILTRERING_BEHANDLING_TYPE where oppgave_filtrering_id not in (select id from OPPGAVE_FILTRERING)");
int deletedRows = query.executeUpdate();
entityManager.flush();
return deletedRows;
}

private static NyeOgFerdigstilteOppgaver map(Object objectArray) {
var objects = (Object[]) objectArray;
var datoFra = localDate(objects[0]);
Expand Down
Loading

0 comments on commit ade1f4b

Please sign in to comment.