Skip to content

Commit 7748f2a

Browse files
authored
TSFF-1157: Egen kontrakt for oppgave (#493)
* TSFF-1157: Egen kontrakt for oppgave * TSFF-1157: Splitter bekreftelse for periodeendring * TSFF-1157: Legger til dato * TSFF-1157: Rename modul * TSFF-1157: Datoendringer implementerer felles interface * TSFF-1157: Legger til data brukt til utledning
1 parent b85a7d5 commit 7748f2a

File tree

7 files changed

+400
-0
lines changed

7 files changed

+400
-0
lines changed

oppgave-ungdomsytelse/pom.xml

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5+
<parent>
6+
<artifactId>k9-format</artifactId>
7+
<groupId>no.nav.k9</groupId>
8+
<version>${revision}${sha1}${changelist}</version>
9+
</parent>
10+
<modelVersion>4.0.0</modelVersion>
11+
<artifactId>oppgave-ungdomsytelse</artifactId>
12+
13+
14+
<dependencies>
15+
<dependency>
16+
<groupId>no.nav.k9</groupId>
17+
<artifactId>soknad</artifactId>
18+
</dependency>
19+
</dependencies>
20+
21+
</project>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,216 @@
1+
package no.nav.k9.oppgave;
2+
3+
import com.fasterxml.jackson.annotation.*;
4+
import com.fasterxml.jackson.databind.node.ObjectNode;
5+
import jakarta.validation.Valid;
6+
import jakarta.validation.constraints.NotNull;
7+
import no.nav.k9.oppgave.bekreftelse.Bekreftelse;
8+
import no.nav.k9.søknad.Innsending;
9+
import no.nav.k9.søknad.JsonUtils;
10+
import no.nav.k9.søknad.felles.DtoKonstanter;
11+
import no.nav.k9.søknad.felles.Kildesystem;
12+
import no.nav.k9.søknad.felles.Versjon;
13+
import no.nav.k9.søknad.felles.personopplysninger.Søker;
14+
import no.nav.k9.søknad.felles.type.Språk;
15+
import no.nav.k9.søknad.felles.type.SøknadId;
16+
17+
import java.io.IOException;
18+
import java.time.ZonedDateTime;
19+
import java.util.Objects;
20+
import java.util.Optional;
21+
22+
@JsonIgnoreProperties(ignoreUnknown = true)
23+
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.NONE, getterVisibility = JsonAutoDetect.Visibility.NONE, setterVisibility = JsonAutoDetect.Visibility.NONE, isGetterVisibility = JsonAutoDetect.Visibility.NONE, creatorVisibility = JsonAutoDetect.Visibility.NONE)
24+
public class OppgaveBekreftelse implements Innsending {
25+
26+
@Valid
27+
@NotNull
28+
@JsonProperty(value = "søknadId", required = true)
29+
private SøknadId søknadId;
30+
31+
@Valid
32+
@NotNull
33+
@JsonProperty(value = "versjon", required = true)
34+
private Versjon versjon;
35+
36+
@Valid
37+
@NotNull
38+
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = DtoKonstanter.DATO_TID_FORMAT, timezone = DtoKonstanter.TIDSSONE)
39+
@JsonProperty(value = "mottattDato", required = true)
40+
private ZonedDateTime mottattDato;
41+
42+
@Valid
43+
@NotNull
44+
@JsonProperty(value = "søker", required = true)
45+
private Søker søker;
46+
47+
@Valid
48+
@JsonProperty(value = "språk", required = false)
49+
private Språk språk = Språk.NORSK_BOKMÅL;
50+
51+
@JsonManagedReference
52+
@Valid
53+
@NotNull
54+
@JsonProperty(value = "bekreftelse", required = true)
55+
private Bekreftelse bekreftelse;
56+
57+
58+
@Valid
59+
@JsonProperty(value = "kildesystem", required = false)
60+
private Kildesystem kildesystem;
61+
62+
public OppgaveBekreftelse() {
63+
//
64+
}
65+
66+
@JsonCreator
67+
public OppgaveBekreftelse(@JsonProperty(value = "søknadId", required = true) @Valid @NotNull SøknadId søknadId,
68+
@JsonProperty(value = "versjon", required = true) @Valid @NotNull Versjon versjon,
69+
@JsonProperty(value = "mottattDato", required = true) @Valid @NotNull ZonedDateTime mottattDato,
70+
@JsonProperty(value = "søker", required = true) @Valid @NotNull Søker søker,
71+
@JsonProperty(value = "språk", required = false) @Valid Språk språk,
72+
@JsonProperty(value = "bekreftelse", required = true) @Valid @NotNull Bekreftelse bekreftelse) {
73+
this.søknadId = Objects.requireNonNull(søknadId, "søknadId");
74+
this.versjon = Objects.requireNonNull(versjon, "versjon");
75+
this.mottattDato = Objects.requireNonNull(mottattDato, "mottattDato");
76+
this.søker = Objects.requireNonNull(søker, "søker");
77+
this.bekreftelse = Objects.requireNonNull(bekreftelse, "bekreftelse");
78+
this.språk = språk;
79+
}
80+
81+
public OppgaveBekreftelse(@JsonProperty(value = "søknadId", required = true) @Valid @NotNull SøknadId søknadId,
82+
@JsonProperty(value = "versjon", required = true) @Valid @NotNull Versjon versjon,
83+
@JsonProperty(value = "mottattDato", required = true) @Valid @NotNull ZonedDateTime mottattDato,
84+
@JsonProperty(value = "søker", required = true) @Valid @NotNull Søker søker,
85+
@JsonProperty(value = "bekreftelse", required = true) @Valid @NotNull Bekreftelse bekreftelse) {
86+
this(søknadId, versjon, mottattDato, søker, Språk.NORSK_BOKMÅL, bekreftelse);
87+
}
88+
89+
@Override
90+
public SøknadId getSøknadId() {
91+
return søknadId;
92+
}
93+
94+
@Override
95+
public Versjon getVersjon() {
96+
return versjon;
97+
}
98+
99+
@Override
100+
public ZonedDateTime getMottattDato() {
101+
return mottattDato;
102+
}
103+
104+
public Språk getSpråk() {
105+
return språk;
106+
}
107+
108+
109+
110+
@Override
111+
public Søker getSøker() {
112+
return søker;
113+
}
114+
115+
@SuppressWarnings("unchecked")
116+
public <B extends Bekreftelse> B getBekreftelse() {
117+
return (B) bekreftelse;
118+
}
119+
120+
121+
public Optional<Kildesystem> getKildesystem() {
122+
return Optional.ofNullable(kildesystem);
123+
}
124+
125+
public void setSøknadId(SøknadId søknadId) {
126+
this.søknadId = Objects.requireNonNull(søknadId, "søknadId");
127+
}
128+
129+
public void setVersjon(Versjon versjon) {
130+
this.versjon = Objects.requireNonNull(versjon);;
131+
}
132+
133+
public void setMottattDato(ZonedDateTime mottattDato) {
134+
this.mottattDato = Objects.requireNonNull(mottattDato, "mottattDato");
135+
}
136+
137+
public void setSøker(Søker søker) {
138+
this.søker = Objects.requireNonNull(søker, "søker");
139+
}
140+
141+
public void setBekreftelse(Bekreftelse bekreftelse) {
142+
this.bekreftelse = Objects.requireNonNull(bekreftelse, "bekreftelse");
143+
}
144+
145+
public void setKildesystem(Kildesystem kildesystem) {
146+
this.kildesystem = kildesystem;
147+
}
148+
149+
public OppgaveBekreftelse medMottattDato(ZonedDateTime mottattDato) {
150+
this.mottattDato = Objects.requireNonNull(mottattDato, "mottattDato");
151+
return this;
152+
}
153+
154+
public OppgaveBekreftelse medSpråk(Språk språk) {
155+
this.språk = språk;
156+
return this;
157+
}
158+
159+
public OppgaveBekreftelse medSøknadId(String søknadId) {
160+
this.søknadId = new SøknadId(Objects.requireNonNull(søknadId, "søknadId"));
161+
return this;
162+
}
163+
164+
public OppgaveBekreftelse medSøknadId(SøknadId søknadId) {
165+
this.søknadId = Objects.requireNonNull(søknadId, "søknadId");
166+
return this;
167+
}
168+
169+
public OppgaveBekreftelse medVersjon(String versjon) {
170+
this.versjon = new Versjon(Objects.requireNonNull(versjon, "versjon"));
171+
return this;
172+
}
173+
174+
public OppgaveBekreftelse medVersjon(Versjon versjon) {
175+
this.versjon = Objects.requireNonNull(versjon, "versjon");
176+
return this;
177+
}
178+
179+
public OppgaveBekreftelse medSøker(Søker søker) {
180+
this.søker = Objects.requireNonNull(søker, "søker");
181+
return this;
182+
}
183+
184+
public OppgaveBekreftelse medBekreftelse(Bekreftelse bekreftelse) {
185+
this.bekreftelse = Objects.requireNonNull(bekreftelse, "bekreftelse");
186+
return this;
187+
}
188+
189+
190+
public OppgaveBekreftelse medKildesystem(Kildesystem kildesystem) {
191+
this.kildesystem = kildesystem;
192+
return this;
193+
}
194+
195+
public static final class SerDes {
196+
private SerDes() {
197+
}
198+
199+
public static String serialize(OppgaveBekreftelse oppgave) {
200+
return JsonUtils.toString(oppgave);
201+
}
202+
203+
public static OppgaveBekreftelse deserialize(String oppgave) {
204+
return JsonUtils.fromString(oppgave, OppgaveBekreftelse.class);
205+
}
206+
207+
public static OppgaveBekreftelse deserialize(ObjectNode node) {
208+
try {
209+
return JsonUtils.getObjectMapper().treeToValue(node, OppgaveBekreftelse.class);
210+
} catch (IOException e) {
211+
throw new IllegalArgumentException("Kunne ikke konvertere til Oppgave.class", e);
212+
}
213+
}
214+
215+
}
216+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package no.nav.k9.oppgave.bekreftelse;
2+
3+
import com.fasterxml.jackson.annotation.JsonAutoDetect;
4+
import com.fasterxml.jackson.annotation.JsonSubTypes;
5+
import com.fasterxml.jackson.annotation.JsonTypeInfo;
6+
import com.fasterxml.jackson.annotation.JsonValue;
7+
import jakarta.validation.Valid;
8+
import no.nav.k9.oppgave.bekreftelse.ung.periodeendring.EndretFomDatoBekreftelse;
9+
import no.nav.k9.oppgave.bekreftelse.ung.periodeendring.EndretTomDatoBekreftelse;
10+
import no.nav.k9.søknad.ytelse.DataBruktTilUtledning;
11+
12+
@Valid
13+
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type")
14+
@JsonSubTypes(value = {
15+
@JsonSubTypes.Type(name = Bekreftelse.UNG_ENDRET_FOM_DATO, value = EndretFomDatoBekreftelse.class),
16+
@JsonSubTypes.Type(name = Bekreftelse.UNG_ENDRET_TOM_DATO, value = EndretTomDatoBekreftelse.class),
17+
})
18+
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.NONE, getterVisibility = JsonAutoDetect.Visibility.NONE, setterVisibility = JsonAutoDetect.Visibility.NONE, isGetterVisibility = JsonAutoDetect.Visibility.NONE, creatorVisibility = JsonAutoDetect.Visibility.NONE)
19+
public interface Bekreftelse {
20+
21+
String UNG_ENDRET_FOM_DATO = "UNG_ENDRET_FOM_DATO";
22+
String UNG_ENDRET_TOM_DATO = "UNG_ENDRET_TOM_DATO";
23+
24+
Bekreftelse.Type getType();
25+
26+
/**
27+
* Data brukt til utledning av bekreftelse.
28+
*/
29+
DataBruktTilUtledning getDataBruktTilUtledning();
30+
31+
Bekreftelse medDataBruktTilUtledning(DataBruktTilUtledning dataBruktTilUtledning);
32+
33+
enum Type {
34+
UNG_ENDRET_FOM_DATO(Bekreftelse.UNG_ENDRET_FOM_DATO),
35+
UNG_ENDRET_TOM_DATO(Bekreftelse.UNG_ENDRET_TOM_DATO);
36+
37+
38+
@JsonValue
39+
private final String kode;
40+
41+
Type(String kode) {
42+
this.kode = kode;
43+
}
44+
45+
public String kode() {
46+
return kode;
47+
}
48+
}
49+
50+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package no.nav.k9.oppgave.bekreftelse.ung.periodeendring;
2+
3+
import no.nav.k9.oppgave.bekreftelse.Bekreftelse;
4+
5+
import java.time.LocalDate;
6+
7+
public interface DatoEndring extends Bekreftelse {
8+
9+
LocalDate getNyDato();
10+
11+
boolean harBrukerGodtattEndringen();
12+
13+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package no.nav.k9.oppgave.bekreftelse.ung.periodeendring;
2+
3+
import no.nav.k9.oppgave.bekreftelse.Bekreftelse;
4+
import no.nav.k9.søknad.ytelse.DataBruktTilUtledning;
5+
6+
import java.time.LocalDate;
7+
8+
public class EndretFomDatoBekreftelse implements DatoEndring {
9+
10+
private LocalDate nyFomDato;
11+
private boolean harBrukerGodtattEndringen;
12+
private DataBruktTilUtledning dataBruktTilUtledning;
13+
14+
15+
public EndretFomDatoBekreftelse(LocalDate nyFomDato, boolean harBrukerGodtattEndringen) {
16+
this.nyFomDato = nyFomDato;
17+
this.harBrukerGodtattEndringen = harBrukerGodtattEndringen;
18+
}
19+
20+
public LocalDate getNyFomDato() {
21+
return nyFomDato;
22+
}
23+
24+
@Override
25+
public Type getType() {
26+
return Type.UNG_ENDRET_FOM_DATO;
27+
}
28+
29+
@Override
30+
public DataBruktTilUtledning getDataBruktTilUtledning() {
31+
return dataBruktTilUtledning;
32+
}
33+
34+
@Override
35+
public Bekreftelse medDataBruktTilUtledning(DataBruktTilUtledning dataBruktTilUtledning) {
36+
this.dataBruktTilUtledning = dataBruktTilUtledning;
37+
return this;
38+
}
39+
40+
@Override
41+
public LocalDate getNyDato() {
42+
return nyFomDato;
43+
}
44+
45+
@Override
46+
public boolean harBrukerGodtattEndringen() {
47+
return harBrukerGodtattEndringen;
48+
}
49+
}

0 commit comments

Comments
 (0)