Skip to content

Commit

Permalink
EP-2113
Browse files Browse the repository at this point in the history
  • Loading branch information
oplekal committed Mar 24, 2020
1 parent e272af1 commit 1bff2a3
Show file tree
Hide file tree
Showing 6 changed files with 34 additions and 21 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@
import com.fasterxml.jackson.annotation.JsonCreator;
import java.util.Arrays;
import java.util.List;

/**
*
* @author nkala
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package fi.vm.sade.eperusteet.domain;

import com.fasterxml.jackson.annotation.JsonCreator;
import lombok.AllArgsConstructor;
import lombok.Getter;

Expand All @@ -18,4 +19,14 @@ public enum TiedoteJulkaisuPaikka {
public String toString() {
return paikka;
}

@JsonCreator
public static TiedoteJulkaisuPaikka of(String paikka) {
for (TiedoteJulkaisuPaikka s : values()) {
if (s.paikka.equalsIgnoreCase(paikka)) {
return s;
}
}
throw new IllegalArgumentException(paikka + " ei ole kelvollinen TiedoteJulkaisuPaikka");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,8 @@ public class TiedoteQuery {
private Boolean perusteeton; // Jos true, palauttaa vain ne tiedotteet, jotka eivät liity mihinkään perusteeseen
private Boolean julkinen; // Jos null, haetaan julkiset ja sisäiset
private Boolean yleinen; // Jos halutaan esittää mm. etusivulla
private Set<TiedoteJulkaisuPaikka> tiedoteJulkaisupaikat;
private Set<KoulutusTyyppi> koulutustyypit;
private Set<Long> perusteIds;
private List<String> tiedoteJulkaisuPaikka;
private List<String> koulutusTyyppi;
private List<Long> perusteIds;

}
Original file line number Diff line number Diff line change
Expand Up @@ -153,25 +153,25 @@ private Predicate buildPredicate(
pred = cb.and(pred, cb.equal(root.get(Tiedote_.yleinen), tq.getYleinen()));
}

if (!ObjectUtils.isEmpty(tq.getTiedoteJulkaisupaikat())) {
if (!ObjectUtils.isEmpty(tq.getTiedoteJulkaisuPaikka())) {
SetJoin<Tiedote, TiedoteJulkaisuPaikka> julkaisupaikat = root.join(Tiedote_.julkaisupaikat);
Optional<Predicate> kieliPred = tq.getTiedoteJulkaisupaikat().stream()
.map((julkaisupaikka) -> cb.equal(julkaisupaikat, julkaisupaikka))
Optional<Predicate> kieliPred = tq.getTiedoteJulkaisuPaikka().stream()
.map((julkaisupaikka) -> cb.equal(julkaisupaikat, TiedoteJulkaisuPaikka.of(julkaisupaikka)))
.reduce(cb::or);

if (kieliPred.isPresent()) {
pred = cb.and(pred, kieliPred.get());
}
}

if (!ObjectUtils.isEmpty(tq.getKoulutustyypit())) {
if (!ObjectUtils.isEmpty(tq.getKoulutusTyyppi())) {
SetJoin<Tiedote, KoulutusTyyppi> koulutustyypit = root.join(Tiedote_.koulutustyypit);
Optional<Predicate> kieliPred = tq.getKoulutustyypit().stream()
.map((koulutustyyppi) -> cb.equal(koulutustyypit, koulutustyyppi))
Optional<Predicate> koulutustyyppiPred = tq.getKoulutusTyyppi().stream()
.map((koulutustyyppi) -> cb.equal(koulutustyypit, KoulutusTyyppi.of(koulutustyyppi)))
.reduce(cb::or);

if (kieliPred.isPresent()) {
pred = cb.and(pred, kieliPred.get());
if (koulutustyyppiPred.isPresent()) {
pred = cb.and(pred, koulutustyyppiPred.get());
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import java.util.List;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.http.HttpStatus;
Expand Down Expand Up @@ -55,9 +56,9 @@ public void initBinder(final WebDataBinder webdataBinder) {
@ApiImplicitParam(name = "perusteeton", dataType = "boolean", paramType = "query", defaultValue = "true", value = "hae perusteettomat tiedotteet"),
@ApiImplicitParam(name = "julkinen", dataType = "boolean", paramType = "query", defaultValue = "true", value = "hae julkiset tiedotteet"),
@ApiImplicitParam(name = "yleinen", dataType = "boolean", paramType = "query", defaultValue = "true", value = "hae yleiset tiedotteet"),
@ApiImplicitParam(name = "tiedoteJulkaisupaikat", dataType = "string", paramType = "query", allowMultiple = true, value = "tiedotteen julkaisupaikat"),
@ApiImplicitParam(name = "tiedoteJulkaisuPaikka", dataType = "string", paramType = "query", allowMultiple = true, value = "tiedotteen julkaisupaikat"),
@ApiImplicitParam(name = "perusteIds", dataType = "long", paramType = "query", allowMultiple = true, value = "tiedotteen perusteiden"),
@ApiImplicitParam(name = "koulutustyypit", dataType = "string", paramType = "query", allowMultiple = true, value = "tiedotteen koulutustyypit"),
@ApiImplicitParam(name = "koulutusTyyppi", dataType = "string", paramType = "query", allowMultiple = true, value = "tiedotteen koulutustyypit"),
})
@RequestMapping(value = "/haku", method = GET)
public Page<TiedoteDto> findTiedotteetBy(@ApiIgnore TiedoteQuery pquery) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import fi.vm.sade.eperusteet.service.test.AbstractIntegrationTest;
import fi.vm.sade.eperusteet.service.test.util.PerusteprojektiTestUtils;
import fi.vm.sade.eperusteet.service.test.util.TestUtils;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
Expand Down Expand Up @@ -67,7 +68,7 @@ public class TiedoteServiceIT extends AbstractIntegrationTest {
@Autowired
private DtoMapper dtoMapper;

private Set<Long> perusteIds = new HashSet<>();
private List<Long> perusteIds = new ArrayList<>();
private PerusteKevytDto perusteDto1;

@Autowired
Expand Down Expand Up @@ -206,14 +207,14 @@ public void testHakuSisainen() {
public void testHakuJulkaisupaikat() {
{
TiedoteQuery tq = new TiedoteQuery();
tq.setTiedoteJulkaisupaikat(Sets.newHashSet(TiedoteJulkaisuPaikka.AMOSAA, TiedoteJulkaisuPaikka.OPS));
tq.setTiedoteJulkaisuPaikka(Arrays.asList(TiedoteJulkaisuPaikka.AMOSAA.toString(), TiedoteJulkaisuPaikka.OPS.toString()));
Page<TiedoteDto> tiedotteet = tiedoteService.findBy(tq);
assertEquals(1, tiedotteet.getTotalElements());
}

{
TiedoteQuery tq = new TiedoteQuery();
tq.setTiedoteJulkaisupaikat(Sets.newHashSet(TiedoteJulkaisuPaikka.OPS));
tq.setTiedoteJulkaisuPaikka(Arrays.asList(TiedoteJulkaisuPaikka.OPS.toString()));
Page<TiedoteDto> tiedotteet = tiedoteService.findBy(tq);
assertEquals(0, tiedotteet.getTotalElements());
}
Expand All @@ -223,14 +224,14 @@ public void testHakuJulkaisupaikat() {
public void testHakuKoulutuspaikat() {
{
TiedoteQuery tq = new TiedoteQuery();
tq.setKoulutustyypit(Sets.newHashSet(KoulutusTyyppi.PERUSTUTKINTO, KoulutusTyyppi.LUKIOKOULUTUS));
tq.setKoulutusTyyppi(Arrays.asList(KoulutusTyyppi.PERUSTUTKINTO.toString(), KoulutusTyyppi.LUKIOKOULUTUS.toString()));
Page<TiedoteDto> tiedotteet = tiedoteService.findBy(tq);
assertEquals(1, tiedotteet.getTotalElements());
}

{
TiedoteQuery tq = new TiedoteQuery();
tq.setKoulutustyypit(Sets.newHashSet(KoulutusTyyppi.LUKIOKOULUTUS));
tq.setKoulutusTyyppi(Arrays.asList(KoulutusTyyppi.LUKIOKOULUTUS.toString()));
Page<TiedoteDto> tiedotteet = tiedoteService.findBy(tq);
assertEquals(0, tiedotteet.getTotalElements());
}
Expand All @@ -248,14 +249,14 @@ public void testHakuPerusteet() {

{
TiedoteQuery tq = new TiedoteQuery();
tq.setPerusteIds(Sets.newHashSet(perusteDto1.getId(), 999l));
tq.setPerusteIds(Arrays.asList(perusteDto1.getId(), 999l));
Page<TiedoteDto> tiedotteet = tiedoteService.findBy(tq);
assertEquals(1, tiedotteet.getTotalElements());
}

{
TiedoteQuery tq = new TiedoteQuery();
tq.setPerusteIds(Sets.newHashSet(999l));
tq.setPerusteIds(Arrays.asList(999l));
Page<TiedoteDto> tiedotteet = tiedoteService.findBy(tq);
assertEquals(0, tiedotteet.getTotalElements());
}
Expand Down

0 comments on commit 1bff2a3

Please sign in to comment.