Archives
Trending
Support
Login
clear text
XML
Django
JavaScript
MATLAB
C
C++
C#
Python
SQL
Shell
Bash
Markdown
YAML
JSON
HTML
CSS
PHP
Java
Ruby
Go
Rust
Swift
Kotlin
Arduino
TypeScript
Perl
Autohotkey
Lua
SQF
R
Scala
Haskell
Groovy
Dart
Clojure
VB.NET
Objective-C
PowerShell
Bash
CoffeeScript
Verilog
package com.example.pb.controller; import javax.ws.rs.core.MediaType; import com.example.pb.dto.BankMapRequest; import com.example.pb.domain.Person; import com.example.pb.repository.PersonRepository; import com.example.pb.service.CreditCardService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*;package com.example.pb.controller; import javax.ws.rs.core.MediaType; import com.example.pb.dto.BankMapRequest; import com.example.pb.domain.Person; import com.example.pb.repository.PersonRepository; import com.example.pb.service.CreditCardService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import reactor.core.publisher.Flux; import reactor.core.scheduler.Schedulers; import java.util.*; import java.util.stream.Collectors; @Controller @RequestMapping(value = "/api/persons") public class InefficientBanksController { @Autowired private PersonRepository repository; @Autowired private CreditCardService creditCardService; private static final Map
CARD_BANK = new HashMap<>(); static { CARD_BANK.put("cc-visa-1", "Bank of Spring"); CARD_BANK.put("cc-mc-1", "Reactive Credit Union"); } @PostMapping(path = "/banks-inefficient", consumes = MediaType.APPLICATION_JSON, produces = MediaType.APPLICATION_JSON) public Map
> mapPersonToBanksInefficient(@RequestBody BankMapRequest req) { List
persons = repository.findAllById(req.getPersonIds()) .publishOn(Schedulers.parallel()) .collectList() .block(); List
allCards = new ArrayList<>(); for (Person p : persons) { if (p.getCreditCardIds() != null) { allCards.addAll(p.getCreditCardIds()); } } List
filtered = allCards.stream() .filter(id -> req.getCreditCardIds() != null && req.getCreditCardIds().contains(id)) .collect(Collectors.toList()); Set
toLookup = new HashSet<>(filtered); Map
> result = new LinkedHashMap<>(); for (Person p : persons) { Map
card2bank = creditCardService.getBankNamesForCardIds(toLookup).block(); List
copy = p.getCreditCardIds() == null ? new ArrayList<>() : new ArrayList<>(p.getCreditCardIds()); copy.removeIf(id -> req.getCreditCardIds() == null || !req.getCreditCardIds().contains(id)); List
banks = copy.stream() .map(card2bank::get) .collect(Collectors.toList()); banks.removeIf(Objects::isNull); banks = new ArrayList<>(new LinkedHashSet<>(banks)); result.put(p.getName(), banks); } return result; } } import reactor.core.publisher.Flux; import reactor.core.scheduler.Schedulers; import java.util.*; import java.util.stream.Collectors; @Controller @RequestMapping(value = "/api/persons") public class InefficientBanksController { @Autowired private PersonRepository repository; @Autowired private CreditCardService creditCardService; private static final Map
CARD_BANK = new HashMap<>(); static { CARD_BANK.put("cc-visa-1", "Bank of Spring"); CARD_BANK.put("cc-mc-1", "Reactive Credit Union"); } @PostMapping(path = "/banks-inefficient", consumes = MediaType.APPLICATION_JSON, produces = MediaType.APPLICATION_JSON) public Map
> mapPersonToBanksInefficient(@RequestBody BankMapRequest req) { List
persons = repository.findAllById(req.getPersonIds()) .publishOn(Schedulers.parallel()) .collectList() .block(); List
allCards = new ArrayList<>(); for (Person p : persons) { if (p.getCreditCardIds() != null) { allCards.addAll(p.getCreditCardIds()); } } List
filtered = allCards.stream() .filter(id -> req.getCreditCardIds() != null && req.getCreditCardIds().contains(id)) .collect(Collectors.toList()); Set
toLookup = new HashSet<>(filtered); Map
> result = new LinkedHashMap<>(); for (Person p : persons) { Map
card2bank = creditCardService.getBankNamesForCardIds(toLookup).block(); List
copy = p.getCreditCardIds() == null ? new ArrayList<>() : new ArrayList<>(p.getCreditCardIds()); copy.removeIf(id -> req.getCreditCardIds() == null || !req.getCreditCardIds().contains(id)); List
banks = copy.stream() .map(card2bank::get) .collect(Collectors.toList()); banks.removeIf(Objects::isNull); banks = new ArrayList<>(new LinkedHashSet<>(banks)); result.put(p.getName(), banks); } return result; } }
Mark as private (unlisted)
for 30 minutes
for 6 hours
for 1 day
for 1 week
for 1 month
for 1 year
everlasting (like CCCP)