Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

oppiaine-kooditettu-nimi-fix #1547

Merged
merged 1 commit into from
Dec 31, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import com.fasterxml.jackson.annotation.JsonInclude;
import fi.vm.sade.eperusteet.dto.Reference;
import fi.vm.sade.eperusteet.dto.ReferenceableDto;
import fi.vm.sade.eperusteet.dto.tutkinnonrakenne.KoodiDto;
import fi.vm.sade.eperusteet.dto.util.LokalisoituTekstiDto;
import lombok.AllArgsConstructor;
import lombok.Data;
Expand All @@ -25,19 +26,11 @@ public abstract class OppiaineBaseDto implements ReferenceableDto {
private Optional<Reference> oppiaine;
private Optional<Boolean> koosteinen;
private Optional<Boolean> abstrakti;
protected Optional<LokalisoituTekstiDto> nimi;
protected LokalisoituTekstiDto nimi;
private KoodiDto koodi;
private Optional<Long> jnro;
private Date muokattu;

@JsonIgnore
public LokalisoituTekstiDto getNimiOrDefault(LokalisoituTekstiDto defaultNimi) {
if (nimi != null) {
return nimi.orElse(defaultNimi);
} else {
return defaultNimi;
}
}

@JsonIgnore
public Long getJnroOrDefault(Long defaultJnro) {
if (jnro != null) {
Expand All @@ -46,4 +39,10 @@ public Long getJnroOrDefault(Long defaultJnro) {
return defaultJnro;
}
}

public LokalisoituTekstiDto getNimi() {
return Optional.ofNullable(koodi)
.map(KoodiDto::getNimi)
.orElse(Optional.ofNullable(nimi).orElse(LokalisoituTekstiDto.of("")));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,14 +22,5 @@ public class OppiaineDto extends OppiaineBaseUpdateDto {
private Set<OppiaineSuppeaDto> oppimaarat;
private Set<OpetuksenKohdealueDto> kohdealueet;
private Set<OppiaineenVuosiluokkaKokonaisuusDto> vuosiluokkakokonaisuudet;
private KoodiDto koodi;
private List<KevytTekstiKappaleDto> vapaatTekstit;

public Optional<LokalisoituTekstiDto> getNimi() {
if (super.getNimi() != null && super.getNimi().isPresent()) {
return super.getNimi();
}

return Optional.ofNullable(koodi).map(KoodiDto::getNimi);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import com.fasterxml.jackson.annotation.JsonInclude;
import fi.vm.sade.eperusteet.dto.KevytTekstiKappaleDto;
import fi.vm.sade.eperusteet.dto.peruste.PerusteRakenneOsa;
import fi.vm.sade.eperusteet.dto.tutkinnonrakenne.KoodiDto;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
Expand All @@ -29,6 +30,6 @@ public class OppiaineLaajaDto extends OppiaineBaseDto {
private String koodiArvo;

public PerusteRakenneOsa getPerusteenOsa() {
return new PerusteRakenneOsa("perusopetus_oppiaine", nimi.get());
return new PerusteRakenneOsa("perusopetus_oppiaine", getNimi());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -91,10 +91,10 @@ private NavigationNodeDto vuosiluokkakokonaisuudet(Long perusteId, String kieli)
private NavigationNodeDto oppiaineet(Long perusteId, String kieli) {
return NavigationNodeDto.of(NavigationType.perusopetusoppiaineet)
.addAll(sisallot.getOppiaineet(perusteId, OppiaineSuppeaDto.class).stream()
.sorted(Comparator.comparing(oppiaine -> LokalisoituTekstiDto.getOrDefault(oppiaine.getNimiOrDefault(LokalisoituTekstiDto.of("")), Kieli.of(kieli), "")))
.sorted(Comparator.comparing(oppiaine -> oppiaine.getNimi().get(Kieli.of(kieli))))
.sorted(Comparator.comparing(oppiaine -> oppiaine.getJnroOrDefault(99L)))
.map(oppiaine ->
NavigationNodeDto.of(NavigationType.perusopetusoppiaine, oppiaine.getNimiOrDefault(null), oppiaine.getId())
NavigationNodeDto.of(NavigationType.perusopetusoppiaine, oppiaine.getNimi(), oppiaine.getId())
.addAll(!ObjectUtils.isEmpty(oppiaine.getOppimaarat()) ? oppimaarat(oppiaine.getOppimaarat(), kieli) : null)
).collect(Collectors.toList()));
}
Expand All @@ -103,9 +103,9 @@ private Stream<NavigationNodeDto> oppimaarat(Set<OppiaineSuppeaDto> oppimaarat,
return Stream.concat(
Stream.of(NavigationNodeDto.of(NavigationType.oppimaarat).meta("navigation-subtype", true)),
oppimaarat.stream()
.sorted(Comparator.comparing(oppiaine -> LokalisoituTekstiDto.getOrDefault(oppiaine.getNimiOrDefault(LokalisoituTekstiDto.of("")), Kieli.of(kieli), "")))
.sorted(Comparator.comparing(oppiaine -> oppiaine.getNimi().get(Kieli.of(kieli))))
.sorted(Comparator.comparing(oppiaine -> oppiaine.getJnroOrDefault(99l)))
.map(oppimaara -> NavigationNodeDto.of(NavigationType.perusopetusoppiaine, oppimaara.getNimiOrDefault(null), oppimaara.getId()).meta("oppimaara", true)));
.map(oppimaara -> NavigationNodeDto.of(NavigationType.perusopetusoppiaine, oppimaara.getNimi(), oppimaara.getId()).meta("oppimaara", true)));
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -61,10 +61,10 @@ private List<NavigationNodeDto> vuosiluokat(PerusteKaikkiDto peruste, String kie
private List<NavigationNodeDto> vuosiluokanOppiaineet(PerusteKaikkiDto peruste, Long vlkId, String kieli) {
return peruste.getPerusopetuksenPerusteenSisalto().getOppiaineet().stream()
.filter(oppiaine -> oppiaineJaOppimaaraVuosiluokkakokonaisuusIdt(oppiaine).contains(vlkId))
.sorted(Comparator.comparing(oppiaine -> LokalisoituTekstiDto.getOrDefault(oppiaine.getNimiOrDefault(LokalisoituTekstiDto.of("")), Kieli.of(kieli), "")))
.sorted(Comparator.comparing(oppiaine -> oppiaine.getNimi().get(Kieli.of(kieli))))
.sorted(Comparator.comparing(oppiaine -> oppiaine.getJnroOrDefault(99l)))
.map(oppiaine ->
NavigationNodeDto.of(NavigationType.perusopetusoppiaine, oppiaine.getNimiOrDefault(null), oppiaine.getId()).meta("vlkId", vlkId)
NavigationNodeDto.of(NavigationType.perusopetusoppiaine, oppiaine.getNimi(), oppiaine.getId()).meta("vlkId", vlkId)
.add(!ObjectUtils.isEmpty(oppiaine.getOppimaarat()) ? oppimaarat(oppiaine.getOppimaarat(), vlkId, kieli) : null)
).collect(Collectors.toList());
}
Expand All @@ -82,10 +82,10 @@ private List<Long> oppiaineJaOppimaaraVuosiluokkakokonaisuusIdt(OppiaineLaajaDto
private NavigationNodeDto oppiaineet(PerusteKaikkiDto peruste, String kieli) {
return NavigationNodeDto.of(NavigationType.perusopetusoppiaineet)
.addAll(peruste.getPerusopetuksenPerusteenSisalto().getOppiaineet().stream()
.sorted(Comparator.comparing(oppiaine -> LokalisoituTekstiDto.getOrDefault(oppiaine.getNimiOrDefault(LokalisoituTekstiDto.of("")), Kieli.of(kieli), "")))
.sorted(Comparator.comparing(oppiaine -> oppiaine.getNimi().get(Kieli.of(kieli))))
.sorted(Comparator.comparing(oppiaine -> oppiaine.getJnroOrDefault(99l)))
.map(oppiaine ->
NavigationNodeDto.of(NavigationType.perusopetusoppiaine, oppiaine.getNimiOrDefault(null), oppiaine.getId())
NavigationNodeDto.of(NavigationType.perusopetusoppiaine, oppiaine.getNimi(), oppiaine.getId())
.add(!ObjectUtils.isEmpty(oppiaine.getOppimaarat()) ? oppimaarat(oppiaine.getOppimaarat(), null, kieli) : null)
).collect(Collectors.toList()));
}
Expand All @@ -94,11 +94,11 @@ private NavigationNodeDto oppimaarat(Set<OppiaineDto> oppimaarat, Long vlkId, St
return NavigationNodeDto.of(NavigationType.oppimaarat).meta("navigation-subtype", true)
.addAll(
oppimaarat.stream()
.sorted(Comparator.comparing(oppiaine -> LokalisoituTekstiDto.getOrDefault(oppiaine.getNimiOrDefault(LokalisoituTekstiDto.of("")), Kieli.of(kieli), "")))
.sorted(Comparator.comparing(oppiaine -> oppiaine.getNimi().get(Kieli.of(kieli))))
.sorted(Comparator.comparing(oppiaine -> oppiaine.getJnroOrDefault(99l)))
.map(oppimaara -> {
NavigationNodeDto node = NavigationNodeDto
.of(NavigationType.perusopetusoppiaine, oppimaara.getNimiOrDefault(null), oppimaara.getId());
.of(NavigationType.perusopetusoppiaine, oppimaara.getNimi(), oppimaara.getId());
if (vlkId != null) {
node = node.meta("vlkId", vlkId);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -209,7 +209,7 @@ private void tarkistaPerusopetuksenOppiaine(
OppiaineSuppeaDto oaDto = mapper.map(oa, OppiaineSuppeaDto.class);

if (oa.getKoodiArvo() == null && oa.getKoodiUri() == null) {
validointi.virhe("peruste-validointi-oppiaine-koodi", NavigationNodeDto.of(NavigationType.perusopetusoppiaine, oaDto.getNimiOrDefault(null), oa.getId()));
validointi.virhe("peruste-validointi-oppiaine-koodi", NavigationNodeDto.of(NavigationType.perusopetusoppiaine, oaDto.getNimi(), oa.getId()));
}

if (oa.getTehtava() != null) {
Expand Down Expand Up @@ -279,11 +279,11 @@ private void tarkistaPerusopetuksenOppiaine(
.flatMap(Collection::stream)
.collect(Collectors.toSet());
if (!sisaltoalueetIdt.containsAll(tavoitteidenSisaltoalueetIdt)) {
validointi.virhe("peruste-validointi-oppiaine-vlk-tavoite-sisaltoalueet", NavigationNodeDto.of(NavigationType.perusopetusoppiaine, oaDto.getNimiOrDefault(null), oa.getId()));
validointi.virhe("peruste-validointi-oppiaine-vlk-tavoite-sisaltoalueet", NavigationNodeDto.of(NavigationType.perusopetusoppiaine, oaDto.getNimi(), oa.getId()));
}
}

virheellisetKielet.entrySet().forEach(entry -> validointi.virhe(entry.getKey(), NavigationNodeDto.of(NavigationType.perusopetusoppiaine, oaDto.getNimiOrDefault(null), oa.getId())));
virheellisetKielet.entrySet().forEach(entry -> validointi.virhe(entry.getKey(), NavigationNodeDto.of(NavigationType.perusopetusoppiaine, oaDto.getNimi(), oa.getId())));

if (oa.getOppimaarat() != null) {
for (Oppiaine oppimaara : oa.getOppimaarat()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,8 @@
import fi.vm.sade.eperusteet.dto.vst.OpintokokonaisuusDto;
import fi.vm.sade.eperusteet.dto.vst.TavoitesisaltoalueDto;
import fi.vm.sade.eperusteet.dto.yl.LukioOppiaineUpdateDto;
import fi.vm.sade.eperusteet.dto.yl.OppiaineBaseDto;
import fi.vm.sade.eperusteet.dto.yl.OppiaineBaseUpdateDto;
import fi.vm.sade.eperusteet.dto.yl.OppiaineDto;
import fi.vm.sade.eperusteet.dto.yl.OppiaineKevytDto;
import fi.vm.sade.eperusteet.dto.yl.OppiaineLaajaDto;
Expand Down Expand Up @@ -673,32 +675,30 @@ public void mapAtoB(Koodi a, OsaamisalaDto b, MappingContext context) {
.byDefault()
.register();

factory.classMap(OppiaineBaseDto.class, Oppiaine.class)
.mapNulls(true)
.customize(OppiaineCustomMapper.create(koodistoClient))
.byDefault()
.register();

factory.classMap(OppiaineDto.class, Oppiaine.class)
.mapNulls(true)
.fieldBToA("vuosiluokkakokonaisuudet", "vuosiluokkakokonaisuudet")
.customize(new CustomMapper<OppiaineDto, Oppiaine>() {
@Override
public void mapBtoA(Oppiaine oppiaine, OppiaineDto oppiaineDto, MappingContext context) {
super.mapBtoA(oppiaine, oppiaineDto, context);
if (oppiaine.getKoodiUri() != null) {
oppiaineDto.setKoodi(koodistoClient.getKoodi(oppiaine.getKoodiUri().split("_")[0], oppiaine.getKoodiUri()));
}
}
.customize(OppiaineCustomMapper.create(koodistoClient))
.byDefault()
.register();

@Override
public void mapAtoB(OppiaineDto oppiaineDto, Oppiaine oppiaine, MappingContext context) {
super.mapAtoB(oppiaineDto, oppiaine, context);
if (oppiaineDto.getKoodi() != null) {
oppiaine.setKoodiUri(oppiaineDto.getKoodi().getUri());
oppiaine.setKoodiArvo(oppiaineDto.getKoodi().getArvo());
}
}
})
factory.classMap(OppiaineLaajaDto.class, Oppiaine.class)
.mapNulls(true)
.fieldBToA("vuosiluokkakokonaisuudet", "vuosiluokkakokonaisuudet")
.customize(OppiaineCustomMapper.create(koodistoClient))
.byDefault()
.register();

factory.classMap(OppiaineSuppeaDto.class, Oppiaine.class)
.fieldBToA("muokattu", "muokattu")
.mapNulls(true)
.fieldBToA("vuosiluokkakokonaisuudet", "vuosiluokkakokonaisuudet")
.customize(OppiaineCustomMapper.create(koodistoClient))
.byDefault()
.register();

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package fi.vm.sade.eperusteet.service.mapping;

import fi.vm.sade.eperusteet.domain.yl.Oppiaine;
import fi.vm.sade.eperusteet.dto.yl.OppiaineBaseDto;
import fi.vm.sade.eperusteet.service.KoodistoClient;
import ma.glasnost.orika.CustomMapper;
import ma.glasnost.orika.MappingContext;

public class OppiaineCustomMapper {

public static <T extends OppiaineBaseDto> CustomMapper<T, Oppiaine> create(KoodistoClient koodistoClient) {
return new CustomMapper<T, Oppiaine>() {

@Override
public void mapBtoA(Oppiaine oppiaine, T oppiaineDto, MappingContext context) {
super.mapBtoA(oppiaine, oppiaineDto, context);
if (oppiaine.getKoodiUri() != null) {
oppiaineDto.setKoodi(koodistoClient.getKoodi(oppiaine.getKoodiUri().split("_")[0], oppiaine.getKoodiUri()));
}
}

@Override
public void mapAtoB(T oppiaineDto, Oppiaine oppiaine, MappingContext context) {
super.mapAtoB(oppiaineDto, oppiaine, context);
if (oppiaineDto.getKoodi() != null) {
oppiaine.setKoodiUri(oppiaineDto.getKoodi().getUri());
oppiaine.setKoodiArvo(oppiaineDto.getKoodi().getArvo());
}
}
};
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ public void testAddAndListOppiaineet() {

List<OppiaineDto> aineet = lukiokoulutuksenPerusteenSisaltoService.getOppiaineet(perusteId, OppiaineDto.class);
assertEquals(1, aineet.size());
assertEquals("Finska", aineet.get(0).getNimi().get().get(SV));
assertEquals("Finska", aineet.get(0).getNimi().get(SV));
assertEquals(2, aineet.get(0).getOppimaarat().size());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ public void testCRUD() throws IOException {
vk = vkrepo.save(vk);

OppiaineDto oppiaineDto = new OppiaineDto();
oppiaineDto.setNimi(Optional.of(lt("Oppiaine")));
oppiaineDto.setNimi(lt("Oppiaine"));
oppiaineDto.setTehtava(to("TehtävänOtsikko", "Tehtava"));
oppiaineDto.setKoosteinen(Optional.of(false));
oppiaineDto.setVapaatTekstit(List.of(KevytTekstiKappaleDto.of("nimi", "teksti"), KevytTekstiKappaleDto.of("nimi2", "teksti2")));
Expand Down Expand Up @@ -186,7 +186,7 @@ public void testAddAndUpdateOppimaara() throws IOException {
vk = vkrepo.save(vk);

OppiaineDto oppiaineDto = new OppiaineDto();
oppiaineDto.setNimi(Optional.of(lt("Oppiaine")));
oppiaineDto.setNimi(lt("Oppiaine"));
oppiaineDto.setTehtava(to("TehtävänOtsikko", "Tehtava"));
oppiaineDto.setKoosteinen(Optional.of(true));

Expand All @@ -205,7 +205,7 @@ public void testAddAndUpdateOppimaara() throws IOException {
assertEquals(0, oa1.getOppimaarat().size());

OppiaineDto oppimaara = new OppiaineDto();
oppimaara.setNimi(olt("OppimaaranNimi"));
oppimaara.setNimi(lt("OppimaaranNimi"));
oppimaara.setOppiaine(Optional.of(new Reference(oa1.getId())));
vkDto = new OppiaineenVuosiluokkaKokonaisuusDto();
vkDto.setTehtava(Optional.of(to("Tehtävä", "")));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,7 @@ private OppiaineSuppeaDto oppiainesuppera(String nimi, Long jnro, Kieli kieli, O

private <T extends OppiaineBaseDto> T oppiaineBase(T baseOppiaine, String nimi, Long jnro, Kieli kieli) {
if (nimi != null) {
baseOppiaine.setNimi(Optional.of(lt(nimi, kieli)));
baseOppiaine.setNimi(lt(nimi, kieli));
}
if (jnro != null) {
baseOppiaine.setJnro(Optional.of(jnro));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ public static OppiaineLuontiPuu oppiaine(LokalisoituTekstiDto nimi) {

public static OppiaineDto oppaine(LokalisoituTekstiDto nimi, Long parentId) {
OppiaineDto dto = new OppiaineDto();
dto.setNimi(Optional.of(nimi));
dto.setNimi(nimi);
dto.setOppiaine(parentId == null ? Optional.empty() : Optional.of(new fi.vm.sade.eperusteet.dto.Reference(parentId.toString())));

return dto;
Expand Down
Loading