From fd02fd263aa6386e50bbaa3fcf284ef22b27b885 Mon Sep 17 00:00:00 2001 From: Espen Johansen Velsvik Date: Thu, 12 Sep 2024 14:44:38 +0200 Subject: [PATCH 1/3] =?UTF-8?q?Oppsett=20av=20verdikjede=20og=20mottak=20a?= =?UTF-8?q?v=20s=C3=B8knad?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nav/k9/s\303\270knad/ytelse/Ytelse.java" | 3 ++ .../ung/v1/UngS\303\270knadValidator.java" | 15 ++++++ .../ytelse/ung/v1/UngYtelse.java" | 52 +++++++++++++++++++ .../ytelse/ung/v1/UngYtelseValidator.java" | 36 +++++++++++++ 4 files changed, 106 insertions(+) create mode 100644 "soknad/src/main/java/no/nav/k9/s\303\270knad/ytelse/ung/v1/UngS\303\270knadValidator.java" create mode 100644 "soknad/src/main/java/no/nav/k9/s\303\270knad/ytelse/ung/v1/UngYtelse.java" create mode 100644 "soknad/src/main/java/no/nav/k9/s\303\270knad/ytelse/ung/v1/UngYtelseValidator.java" diff --git "a/soknad/src/main/java/no/nav/k9/s\303\270knad/ytelse/Ytelse.java" "b/soknad/src/main/java/no/nav/k9/s\303\270knad/ytelse/Ytelse.java" index 7931f44a..33a54bf7 100644 --- "a/soknad/src/main/java/no/nav/k9/s\303\270knad/ytelse/Ytelse.java" +++ "b/soknad/src/main/java/no/nav/k9/s\303\270knad/ytelse/Ytelse.java" @@ -41,6 +41,7 @@ public interface Ytelse { String OPPLÆRINGSPENGER = "OPPLÆRINGSPENGER"; String PLEIEPENGER_SYKT_BARN = "PLEIEPENGER_SYKT_BARN"; String PLEIEPENGER_LIVETS_SLUTTFASE = "PLEIEPENGER_LIVETS_SLUTTFASE"; + String UNG = "UNG"; Ytelse.Type getType(); @@ -79,6 +80,8 @@ enum Type { OMSORGSPENGER_UTVIDETRETT_KRONISK_SYKT_BARN(Ytelse.OMSORGSPENGER_UTVIDETRETT_KRONISK_SYKT), OMSORGSPENGER_UTVIDETRETT_MIDLERTIDIG_ALENE(Ytelse.OMSORGSPENGER_UTVIDETRETT_MIDLERTIDIG_ALENE), OMSORGSPENGER_UTVIDETRETT_ALENE_OMSORG(Ytelse.OMSORGSPENGER_UTVIDETRETT_ALENE_OMSORG), + UNG(Ytelse.UNG), + ; @JsonValue diff --git "a/soknad/src/main/java/no/nav/k9/s\303\270knad/ytelse/ung/v1/UngS\303\270knadValidator.java" "b/soknad/src/main/java/no/nav/k9/s\303\270knad/ytelse/ung/v1/UngS\303\270knadValidator.java" new file mode 100644 index 00000000..b4aacf85 --- /dev/null +++ "b/soknad/src/main/java/no/nav/k9/s\303\270knad/ytelse/ung/v1/UngS\303\270knadValidator.java" @@ -0,0 +1,15 @@ +package no.nav.k9.søknad.ytelse.ung.v1; + +import java.util.List; + +import no.nav.k9.søknad.SøknadValidator; +import no.nav.k9.søknad.felles.Feil; + +class UngSøknadValidator extends SøknadValidator { + + @Override + public List valider(Object søknad) { + return List.of(); + } + +} diff --git "a/soknad/src/main/java/no/nav/k9/s\303\270knad/ytelse/ung/v1/UngYtelse.java" "b/soknad/src/main/java/no/nav/k9/s\303\270knad/ytelse/ung/v1/UngYtelse.java" new file mode 100644 index 00000000..e7a5dac4 --- /dev/null +++ "b/soknad/src/main/java/no/nav/k9/s\303\270knad/ytelse/ung/v1/UngYtelse.java" @@ -0,0 +1,52 @@ +package no.nav.k9.søknad.ytelse.ung.v1; + +import java.util.List; + +import no.nav.k9.søknad.felles.Versjon; +import no.nav.k9.søknad.felles.type.Periode; +import no.nav.k9.søknad.felles.type.Person; +import no.nav.k9.søknad.ytelse.DataBruktTilUtledning; +import no.nav.k9.søknad.ytelse.Ytelse; +import no.nav.k9.søknad.ytelse.YtelseValidator; + +class UngYtelse implements Ytelse { + @Override + public Type getType() { + return Type.UNG; + } + + @Override + public YtelseValidator getValidator(Versjon versjon) { + return new UngYtelseValidator(); + } + + @Override + public DataBruktTilUtledning getDataBruktTilUtledning() { + return new DataBruktTilUtledning(); + } + + @Override + public Ytelse medDataBruktTilUtledning(DataBruktTilUtledning dataBruktTilUtledning) { + return this; + } + + @Override + public List getBerørtePersoner() { + return List.of(); + } + + @Override + public Person getPleietrengende() { + return null; + } + + @Override + public Person getAnnenPart() { + return null; + } + + @Override + public Periode getSøknadsperiode() { + return null; + } +} diff --git "a/soknad/src/main/java/no/nav/k9/s\303\270knad/ytelse/ung/v1/UngYtelseValidator.java" "b/soknad/src/main/java/no/nav/k9/s\303\270knad/ytelse/ung/v1/UngYtelseValidator.java" new file mode 100644 index 00000000..22de8f8f --- /dev/null +++ "b/soknad/src/main/java/no/nav/k9/s\303\270knad/ytelse/ung/v1/UngYtelseValidator.java" @@ -0,0 +1,36 @@ +package no.nav.k9.søknad.ytelse.ung.v1; + +import java.util.Collections; +import java.util.List; + +import no.nav.k9.søknad.felles.Feil; +import no.nav.k9.søknad.felles.type.Periode; +import no.nav.k9.søknad.ytelse.Ytelse; +import no.nav.k9.søknad.ytelse.YtelseValidator; + +class UngYtelseValidator extends YtelseValidator { + + private final String YTELSE_FELT = "ytelse."; + + @Override + public List valider(Ytelse ytelse) { + return Collections.emptyList(); + } + + @Override + public List valider(Ytelse ytelse, List gyldigeEndringsperioder) { + return Collections.emptyList(); + } + + @Override + public void forsikreValidert(Ytelse ytelse) { + + } + + public void forsikreValidert(Ytelse ytelse, List gyldigeEndringsperioder) { + + } + + + +} From 39c5f946be3cd57ba22ef59482a0b5fef04a54a6 Mon Sep 17 00:00:00 2001 From: Espen Johansen Velsvik Date: Fri, 13 Sep 2024 16:33:08 +0200 Subject: [PATCH 2/3] =?UTF-8?q?S=C3=B8knad=20og=20verdikjedetest?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nav/k9/s\303\270knad/ytelse/Ytelse.java" | 2 ++ .../ung/v1/UngS\303\270knadValidator.java" | 15 --------- .../UngdomsytelseS\303\270knadValidator.java" | 33 +++++++++++++++++++ 3 files changed, 35 insertions(+), 15 deletions(-) delete mode 100644 "soknad/src/main/java/no/nav/k9/s\303\270knad/ytelse/ung/v1/UngS\303\270knadValidator.java" create mode 100644 "soknad/src/main/java/no/nav/k9/s\303\270knad/ytelse/ung/v1/UngdomsytelseS\303\270knadValidator.java" diff --git "a/soknad/src/main/java/no/nav/k9/s\303\270knad/ytelse/Ytelse.java" "b/soknad/src/main/java/no/nav/k9/s\303\270knad/ytelse/Ytelse.java" index 33a54bf7..c14b5dcc 100644 --- "a/soknad/src/main/java/no/nav/k9/s\303\270knad/ytelse/Ytelse.java" +++ "b/soknad/src/main/java/no/nav/k9/s\303\270knad/ytelse/Ytelse.java" @@ -19,6 +19,7 @@ import no.nav.k9.søknad.ytelse.olp.v1.Opplæringspenger; import no.nav.k9.søknad.ytelse.pls.v1.PleipengerLivetsSluttfase; import no.nav.k9.søknad.ytelse.psb.v1.PleiepengerSyktBarn; +import no.nav.k9.søknad.ytelse.ung.v1.Ungdomsytelse; @Valid @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type") @@ -30,6 +31,7 @@ @JsonSubTypes.Type(name = Ytelse.PLEIEPENGER_SYKT_BARN, value = PleiepengerSyktBarn.class), @JsonSubTypes.Type(name = Ytelse.OPPLÆRINGSPENGER, value = Opplæringspenger.class), @JsonSubTypes.Type(name = Ytelse.PLEIEPENGER_LIVETS_SLUTTFASE, value = PleipengerLivetsSluttfase.class), + @JsonSubTypes.Type(name = Ytelse.UNGDOMSYTELSE, value = Ungdomsytelse.class), }) @JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.NONE, getterVisibility = JsonAutoDetect.Visibility.NONE, setterVisibility = JsonAutoDetect.Visibility.NONE, isGetterVisibility = JsonAutoDetect.Visibility.NONE, creatorVisibility = JsonAutoDetect.Visibility.NONE) public interface Ytelse { diff --git "a/soknad/src/main/java/no/nav/k9/s\303\270knad/ytelse/ung/v1/UngS\303\270knadValidator.java" "b/soknad/src/main/java/no/nav/k9/s\303\270knad/ytelse/ung/v1/UngS\303\270knadValidator.java" deleted file mode 100644 index b4aacf85..00000000 --- "a/soknad/src/main/java/no/nav/k9/s\303\270knad/ytelse/ung/v1/UngS\303\270knadValidator.java" +++ /dev/null @@ -1,15 +0,0 @@ -package no.nav.k9.søknad.ytelse.ung.v1; - -import java.util.List; - -import no.nav.k9.søknad.SøknadValidator; -import no.nav.k9.søknad.felles.Feil; - -class UngSøknadValidator extends SøknadValidator { - - @Override - public List valider(Object søknad) { - return List.of(); - } - -} diff --git "a/soknad/src/main/java/no/nav/k9/s\303\270knad/ytelse/ung/v1/UngdomsytelseS\303\270knadValidator.java" "b/soknad/src/main/java/no/nav/k9/s\303\270knad/ytelse/ung/v1/UngdomsytelseS\303\270knadValidator.java" new file mode 100644 index 00000000..3e8d68e0 --- /dev/null +++ "b/soknad/src/main/java/no/nav/k9/s\303\270knad/ytelse/ung/v1/UngdomsytelseS\303\270knadValidator.java" @@ -0,0 +1,33 @@ +package no.nav.k9.søknad.ytelse.ung.v1; + +import java.util.List; +import java.util.stream.Collectors; + +import no.nav.k9.søknad.SøknadValidator; +import no.nav.k9.søknad.felles.Feil; +import no.nav.k9.søknad.felles.type.Periode; +import no.nav.k9.søknad.felles.validering.AvbrytendeValideringsfeil; + +class UngSøknadValidator extends SøknadValidator { + + @Override + public List valider(Object søknad) { + return List.of(); + } + + public List valider(Søknad søknad, List gyldigeEndringsperioder) { + var validate = VALIDATOR_FACTORY.getValidator().validate(søknad); + + List feil = validate.stream() + .map(Feil::toFeil) + .collect(Collectors.toList()); + + if (AvbrytendeValideringsfeil.harAvbrytendeValideringsfeil(validate)) { + return feil; + } + + validerFelterPåSøknad(søknad, feil); + return feil; + } + +} From 5d5d37a55e3132a7314f3e5e1f3beb48832cd5c9 Mon Sep 17 00:00:00 2001 From: Espen Johansen Velsvik Date: Fri, 13 Sep 2024 16:41:38 +0200 Subject: [PATCH 3/3] =?UTF-8?q?S=C3=B8knad,=20verdikjedetest=20og=20behand?= =?UTF-8?q?lingsmodell?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nav/k9/s\303\270knad/ytelse/Ytelse.java" | 4 +- .../ytelse/ung/v1/UngYtelse.java" | 52 ---------- .../ytelse/ung/v1/UngYtelseValidator.java" | 36 ------- .../ytelse/ung/v1/Ungdomsytelse.java" | 97 +++++++++++++++++++ .../UngdomsytelseS\303\270knadValidator.java" | 9 +- 5 files changed, 106 insertions(+), 92 deletions(-) delete mode 100644 "soknad/src/main/java/no/nav/k9/s\303\270knad/ytelse/ung/v1/UngYtelse.java" delete mode 100644 "soknad/src/main/java/no/nav/k9/s\303\270knad/ytelse/ung/v1/UngYtelseValidator.java" create mode 100644 "soknad/src/main/java/no/nav/k9/s\303\270knad/ytelse/ung/v1/Ungdomsytelse.java" diff --git "a/soknad/src/main/java/no/nav/k9/s\303\270knad/ytelse/Ytelse.java" "b/soknad/src/main/java/no/nav/k9/s\303\270knad/ytelse/Ytelse.java" index c14b5dcc..770e2169 100644 --- "a/soknad/src/main/java/no/nav/k9/s\303\270knad/ytelse/Ytelse.java" +++ "b/soknad/src/main/java/no/nav/k9/s\303\270knad/ytelse/Ytelse.java" @@ -43,7 +43,7 @@ public interface Ytelse { String OPPLÆRINGSPENGER = "OPPLÆRINGSPENGER"; String PLEIEPENGER_SYKT_BARN = "PLEIEPENGER_SYKT_BARN"; String PLEIEPENGER_LIVETS_SLUTTFASE = "PLEIEPENGER_LIVETS_SLUTTFASE"; - String UNG = "UNG"; + String UNGDOMSYTELSE = "UNGDOMSYTELSE"; Ytelse.Type getType(); @@ -82,7 +82,7 @@ enum Type { OMSORGSPENGER_UTVIDETRETT_KRONISK_SYKT_BARN(Ytelse.OMSORGSPENGER_UTVIDETRETT_KRONISK_SYKT), OMSORGSPENGER_UTVIDETRETT_MIDLERTIDIG_ALENE(Ytelse.OMSORGSPENGER_UTVIDETRETT_MIDLERTIDIG_ALENE), OMSORGSPENGER_UTVIDETRETT_ALENE_OMSORG(Ytelse.OMSORGSPENGER_UTVIDETRETT_ALENE_OMSORG), - UNG(Ytelse.UNG), + UNGDOMSYTELSE(Ytelse.UNGDOMSYTELSE), ; diff --git "a/soknad/src/main/java/no/nav/k9/s\303\270knad/ytelse/ung/v1/UngYtelse.java" "b/soknad/src/main/java/no/nav/k9/s\303\270knad/ytelse/ung/v1/UngYtelse.java" deleted file mode 100644 index e7a5dac4..00000000 --- "a/soknad/src/main/java/no/nav/k9/s\303\270knad/ytelse/ung/v1/UngYtelse.java" +++ /dev/null @@ -1,52 +0,0 @@ -package no.nav.k9.søknad.ytelse.ung.v1; - -import java.util.List; - -import no.nav.k9.søknad.felles.Versjon; -import no.nav.k9.søknad.felles.type.Periode; -import no.nav.k9.søknad.felles.type.Person; -import no.nav.k9.søknad.ytelse.DataBruktTilUtledning; -import no.nav.k9.søknad.ytelse.Ytelse; -import no.nav.k9.søknad.ytelse.YtelseValidator; - -class UngYtelse implements Ytelse { - @Override - public Type getType() { - return Type.UNG; - } - - @Override - public YtelseValidator getValidator(Versjon versjon) { - return new UngYtelseValidator(); - } - - @Override - public DataBruktTilUtledning getDataBruktTilUtledning() { - return new DataBruktTilUtledning(); - } - - @Override - public Ytelse medDataBruktTilUtledning(DataBruktTilUtledning dataBruktTilUtledning) { - return this; - } - - @Override - public List getBerørtePersoner() { - return List.of(); - } - - @Override - public Person getPleietrengende() { - return null; - } - - @Override - public Person getAnnenPart() { - return null; - } - - @Override - public Periode getSøknadsperiode() { - return null; - } -} diff --git "a/soknad/src/main/java/no/nav/k9/s\303\270knad/ytelse/ung/v1/UngYtelseValidator.java" "b/soknad/src/main/java/no/nav/k9/s\303\270knad/ytelse/ung/v1/UngYtelseValidator.java" deleted file mode 100644 index 22de8f8f..00000000 --- "a/soknad/src/main/java/no/nav/k9/s\303\270knad/ytelse/ung/v1/UngYtelseValidator.java" +++ /dev/null @@ -1,36 +0,0 @@ -package no.nav.k9.søknad.ytelse.ung.v1; - -import java.util.Collections; -import java.util.List; - -import no.nav.k9.søknad.felles.Feil; -import no.nav.k9.søknad.felles.type.Periode; -import no.nav.k9.søknad.ytelse.Ytelse; -import no.nav.k9.søknad.ytelse.YtelseValidator; - -class UngYtelseValidator extends YtelseValidator { - - private final String YTELSE_FELT = "ytelse."; - - @Override - public List valider(Ytelse ytelse) { - return Collections.emptyList(); - } - - @Override - public List valider(Ytelse ytelse, List gyldigeEndringsperioder) { - return Collections.emptyList(); - } - - @Override - public void forsikreValidert(Ytelse ytelse) { - - } - - public void forsikreValidert(Ytelse ytelse, List gyldigeEndringsperioder) { - - } - - - -} diff --git "a/soknad/src/main/java/no/nav/k9/s\303\270knad/ytelse/ung/v1/Ungdomsytelse.java" "b/soknad/src/main/java/no/nav/k9/s\303\270knad/ytelse/ung/v1/Ungdomsytelse.java" new file mode 100644 index 00000000..a7979fc4 --- /dev/null +++ "b/soknad/src/main/java/no/nav/k9/s\303\270knad/ytelse/ung/v1/Ungdomsytelse.java" @@ -0,0 +1,97 @@ +package no.nav.k9.søknad.ytelse.ung.v1; + +import java.time.LocalDate; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonProperty; + +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotNull; +import no.nav.k9.søknad.felles.Feil; +import no.nav.k9.søknad.felles.Versjon; +import no.nav.k9.søknad.felles.type.Periode; +import no.nav.k9.søknad.felles.type.Person; +import no.nav.k9.søknad.felles.validering.periode.LukketPeriode; +import no.nav.k9.søknad.ytelse.DataBruktTilUtledning; +import no.nav.k9.søknad.ytelse.Ytelse; +import no.nav.k9.søknad.ytelse.YtelseValidator; + +public class Ungdomsytelse implements Ytelse { + + @Valid + @JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY) + @JsonProperty(value = "søknadsperiode", required = true) + @NotNull + private List<@NotNull @LukketPeriode Periode> søknadsperiode = new ArrayList<>(); + + @Override + public Type getType() { + return Type.UNGDOMSYTELSE; + } + + @Override + public YtelseValidator getValidator(Versjon versjon) { + return new YtelseValidator() { + @Override + public List valider(Ytelse søknad) { + return List.of(); + } + }; + } + + @Override + public DataBruktTilUtledning getDataBruktTilUtledning() { + return new DataBruktTilUtledning(); + } + + @Override + public Ytelse medDataBruktTilUtledning(DataBruktTilUtledning dataBruktTilUtledning) { + return this; + } + + @Override + public List getBerørtePersoner() { + return List.of(); + } + + @Override + public Person getPleietrengende() { + return null; + } + + @Override + public Person getAnnenPart() { + return null; + } + + @Override + public Periode getSøknadsperiode() { + final List perioder = new ArrayList<>(søknadsperiode); + + final var fom = perioder + .stream() + .map(Periode::getFraOgMed) + .min(LocalDate::compareTo) + .orElseThrow(); + final var tom = perioder + .stream() + .map(Periode::getTilOgMed) + .max(LocalDate::compareTo) + .orElseThrow(); + return new Periode(fom, tom); + } + + public Ungdomsytelse medSøknadsperiode(List søknadsperiodeList) { + this.søknadsperiode.addAll(Objects.requireNonNull(søknadsperiodeList, "søknadsperiodeList")); + return this; + } + + public Ungdomsytelse medSøknadsperiode(Periode søknadsperiode) { + this.søknadsperiode.add(Objects.requireNonNull(søknadsperiode, "søknadsperiode")); + return this; + } + +} diff --git "a/soknad/src/main/java/no/nav/k9/s\303\270knad/ytelse/ung/v1/UngdomsytelseS\303\270knadValidator.java" "b/soknad/src/main/java/no/nav/k9/s\303\270knad/ytelse/ung/v1/UngdomsytelseS\303\270knadValidator.java" index 3e8d68e0..aec2e7a2 100644 --- "a/soknad/src/main/java/no/nav/k9/s\303\270knad/ytelse/ung/v1/UngdomsytelseS\303\270knadValidator.java" +++ "b/soknad/src/main/java/no/nav/k9/s\303\270knad/ytelse/ung/v1/UngdomsytelseS\303\270knadValidator.java" @@ -3,15 +3,20 @@ import java.util.List; import java.util.stream.Collectors; +import jakarta.validation.Validation; +import jakarta.validation.ValidatorFactory; +import no.nav.k9.søknad.Søknad; import no.nav.k9.søknad.SøknadValidator; import no.nav.k9.søknad.felles.Feil; import no.nav.k9.søknad.felles.type.Periode; import no.nav.k9.søknad.felles.validering.AvbrytendeValideringsfeil; -class UngSøknadValidator extends SøknadValidator { +public class UngdomsytelseSøknadValidator extends SøknadValidator { + + private static final ValidatorFactory VALIDATOR_FACTORY = Validation.buildDefaultValidatorFactory(); @Override - public List valider(Object søknad) { + public List valider(Søknad søknad) { return List.of(); }