Skip to content

Commit 46d3b1d

Browse files
Der-Alex-Kboal
andauthored
DAVE 702 (#375)
* add method for in between check of dates * remove unused impoprt * add unit test * add unittest * add unittest * add logic to set dates in messfaehigkeit * adapt unit test * adapt unit test * add unit test * ein zwischenstand * add messfaehihkeiten to validation object for auswertung * add lgic to extract relevant messfaehigkeiten * add lgic to extract relevant messfaehigkeiten * refactor some code * not running * new code base * add extraction of tagesaggregate * add extraction of tagesaggregate * add extraction of tagesaggregate * add method to null non choosen tagesaggragate attributes * adapt unit test * remove unecassry mapper * add unit test * add unit tests * add unit test * add unit test * add unit test * add unit test * add uniot test * add unit test * add unit test * add unit test * add unit test * add unit tests * unit test * add javadoc * add partial unit test * refactor code * refactor code * reformat code * fix bug divide by 0 * add javadocs * add javadoc * add javadoc * add javadoc * fix unittest * first draft of valid days * add days to excel sheet * add unit tests * remove increment * refactor code * fix bug for radverkehr * adapt unit test * add unit test * add unit tests * add unit test * adapt unit test * Refactor Verkehrsart as Enum (#361) * detektierte Verkehrsart als enum uebermitteln * Feld verkehrsart umbenannt * DVE-699 (#372) * always update letztePlausibleMessung save highest Fahrzeugklasse instead of last one * Anmerkung umgesetzt * hotfix * fix second bug and add comment * hotfix bug * add javadoc * add searchfilter for Verkehrsart * spotless * hotfix to extract relevant kalendertage of zeitraum --------- Co-authored-by: alexander.boxhorn <[email protected]>
1 parent 804ea8e commit 46d3b1d

File tree

3 files changed

+20
-9
lines changed

3 files changed

+20
-9
lines changed

src/main/java/de/muenchen/dave/controller/SucheController.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import de.muenchen.dave.domain.dtos.suche.SucheComplexSuggestsDTO;
66
import de.muenchen.dave.exceptions.ResourceNotFoundException;
77
import de.muenchen.dave.services.SucheService;
8+
import jakarta.validation.Valid;
89
import jakarta.validation.constraints.NotNull;
910
import java.util.Set;
1011
import lombok.extern.slf4j.Slf4j;
@@ -39,7 +40,7 @@ public SucheController(final SucheService sucheService) {
3940
@PostMapping(value = "/suggest-datenportal", produces = MediaType.APPLICATION_JSON_VALUE)
4041
@Transactional(readOnly = true)
4142
public ResponseEntity<SucheComplexSuggestsDTO> suggestDatenportal(@RequestParam(value = REQUEST_PARAMETER_QUERY) @NotNull final String query,
42-
@RequestBody @NotNull final SearchAndFilterOptionsDTO searchAndFilterOptions) {
43+
@RequestBody @NotNull @Valid final SearchAndFilterOptionsDTO searchAndFilterOptions) {
4344
try {
4445
final SucheComplexSuggestsDTO sucheComplexSuggestsDTO = this.sucheService.getComplexSuggestSichtbarDatenportal(query, searchAndFilterOptions);
4546
return new ResponseEntity<>(sucheComplexSuggestsDTO, HttpStatus.OK);
@@ -55,7 +56,7 @@ public ResponseEntity<SucheComplexSuggestsDTO> suggestDatenportal(@RequestParam(
5556
@PostMapping(value = "/suggest", produces = MediaType.APPLICATION_JSON_VALUE)
5657
@Transactional(readOnly = true)
5758
public ResponseEntity<SucheComplexSuggestsDTO> suggest(@RequestParam(value = REQUEST_PARAMETER_QUERY) @NotNull final String query,
58-
@RequestBody @NotNull final SearchAndFilterOptionsDTO searchAndFilterOptions) {
59+
@RequestBody @NotNull @Valid final SearchAndFilterOptionsDTO searchAndFilterOptions) {
5960
try {
6061
final SucheComplexSuggestsDTO sucheComplexSuggestsDTO = this.sucheService.getComplexSuggest(query, searchAndFilterOptions, true);
6162
return new ResponseEntity<>(sucheComplexSuggestsDTO, HttpStatus.OK);
@@ -72,7 +73,7 @@ public ResponseEntity<SucheComplexSuggestsDTO> suggest(@RequestParam(value = REQ
7273
@Transactional(readOnly = true)
7374
public ResponseEntity<Set<ErhebungsstelleKarteDTO>> searchErhebungsstelleForMapDatenportal(
7475
@RequestParam(value = REQUEST_PARAMETER_QUERY) @NotNull final String query,
75-
@RequestBody @NotNull final SearchAndFilterOptionsDTO searchAndFilterOptions) {
76+
@RequestBody @NotNull @Valid final SearchAndFilterOptionsDTO searchAndFilterOptions) {
7677
try {
7778
final Set<ErhebungsstelleKarteDTO> erhebungsstellenForMap = this.sucheService.sucheErhebungsstelleSichtbarDatenportal(query,
7879
searchAndFilterOptions);
@@ -90,7 +91,7 @@ public ResponseEntity<Set<ErhebungsstelleKarteDTO>> searchErhebungsstelleForMapD
9091
@Transactional(readOnly = true)
9192
public ResponseEntity<Set<ErhebungsstelleKarteDTO>> searchErhebungsstelleForMap(
9293
@RequestParam(value = REQUEST_PARAMETER_QUERY) @NotNull final String query,
93-
@RequestBody @NotNull final SearchAndFilterOptionsDTO searchAndFilterOptions) {
94+
@RequestBody @NotNull @Valid final SearchAndFilterOptionsDTO searchAndFilterOptions) {
9495
try {
9596
final Set<ErhebungsstelleKarteDTO> erhebungsstellenForMap = this.sucheService.sucheErhebungsstelle(query, searchAndFilterOptions, true);
9697
return new ResponseEntity<>(erhebungsstellenForMap, HttpStatus.OK);
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,15 @@
11
package de.muenchen.dave.domain.dtos.suche;
22

3+
import de.muenchen.dave.domain.enums.Verkehrsart;
4+
import jakarta.validation.constraints.NotNull;
5+
import java.util.List;
36
import lombok.Data;
47

58
@Data
69
public class SearchAndFilterOptionsDTO {
710

811
private boolean searchInMessstellen;
912
private boolean searchInZaehlstellen;
13+
@NotNull
14+
private List<Verkehrsart> messstelleVerkehrsart;
1015
}

src/main/java/de/muenchen/dave/services/SucheService.java

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ public SucheComplexSuggestsDTO getComplexSuggest(
202202

203203
if (searchAndFilterOptions.isSearchInMessstellen()) {
204204
// Messstellen
205-
dto.setMessstellenSuggests(getMessstellenSuggest(q));
205+
dto.setMessstellenSuggests(getMessstellenSuggest(q, searchAndFilterOptions));
206206
}
207207

208208
return dto;
@@ -249,7 +249,7 @@ public Set<ErhebungsstelleKarteDTO> sucheErhebungsstelle(
249249
log.debug("Zugriff auf den Service #sucheErhebungsstelle");
250250
final Set<ErhebungsstelleKarteDTO> searchResult = new HashSet<>();
251251
if (searchAndFilterOptions.isSearchInMessstellen()) {
252-
searchResult.addAll(sucheMessstelle(query));
252+
searchResult.addAll(sucheMessstelle(query, searchAndFilterOptions));
253253
}
254254
if (searchAndFilterOptions.isSearchInZaehlstellen()) {
255255
searchResult.addAll(sucheZaehlstelle(query, searchAndFilterOptions, isAdminportal));
@@ -300,9 +300,11 @@ private Set<ZaehlstelleKarteDTO> sucheZaehlstelle(final String query, final Sear
300300
* @param query Eine Suchquery
301301
* @return Ein Set von befüllten SucheMessstelleSuggestDTOs
302302
*/
303-
private List<SucheMessstelleSuggestDTO> getMessstellenSuggest(final String query) {
303+
private List<SucheMessstelleSuggestDTO> getMessstellenSuggest(final String query, final SearchAndFilterOptionsDTO searchAndFilterOptions) {
304304
final Page<Messstelle> messstellen = this.messstelleIndex.suggestSearch(query, PageRequest.of(0, 3));
305305
final List<SucheMessstelleSuggestDTO> sucheMessstelleSuggestDTOS = messstellen.stream()
306+
.filter(messstelle -> CollectionUtils.emptyIfNull(searchAndFilterOptions.getMessstelleVerkehrsart())
307+
.contains(messstelle.getDetektierteVerkehrsart()))
306308
.map(this.messstelleMapper::bean2SucheMessstelleSuggestDto)
307309
.collect(Collectors.toList());
308310
log.debug("Found {} messstelle(n)", sucheMessstelleSuggestDTOS.size());
@@ -315,7 +317,7 @@ private List<SucheMessstelleSuggestDTO> getMessstellenSuggest(final String query
315317
* @param query Eine Suchquery
316318
* @return Ein Set von befüllten ErhebungsstelleKarteDTOs
317319
*/
318-
private Set<MessstelleKarteDTO> sucheMessstelle(final String query) {
320+
private Set<MessstelleKarteDTO> sucheMessstelle(final String query, final SearchAndFilterOptionsDTO searchAndFilterOptions) {
319321
final List<Messstelle> messstellen;
320322
final PageRequest pageable = PageRequest.of(0, 10000);
321323
if (StringUtils.isEmpty(query)) {
@@ -325,7 +327,10 @@ private Set<MessstelleKarteDTO> sucheMessstelle(final String query) {
325327
log.debug("query '{}'", q);
326328
messstellen = this.messstelleIndex.suggestSearch(q, pageable).toList();
327329
}
328-
return sucheMapper.messstelleToMessstelleKarteDTO(messstellen, stadtbezirkMapper);
330+
final var filteredMessstellen = messstellen.stream().filter(
331+
messstelle -> CollectionUtils.emptyIfNull(searchAndFilterOptions.getMessstelleVerkehrsart()).contains(messstelle.getDetektierteVerkehrsart()))
332+
.toList();
333+
return sucheMapper.messstelleToMessstelleKarteDTO(filteredMessstellen, stadtbezirkMapper);
329334
}
330335

331336
private boolean isDateEqualOrAfter(final LocalDate datum, final LocalDate datumAfter) {

0 commit comments

Comments
 (0)