FreelanceBot
40 строк · 1.3 Кб
1package telegramBot.util;2
3import telegramBot.dto.OrderDto;4import telegramBot.entity.Order;5
6import java.util.ArrayList;7import java.util.List;8import java.util.Set;9import java.util.concurrent.ConcurrentHashMap;10import java.util.function.Function;11import java.util.function.Predicate;12import java.util.stream.Collectors;13
14public class OrderUtil {15
16public static OrderDto toDto(Order order){17String title = order.getTitle();18String link = order.getLink();19String exchangeName = order.getExchange().getName();20String exchangeLink = order.getExchange().getLink();21String subscription = order.getSubscription().getLanguage();22return new OrderDto(title, link, exchangeName, exchangeLink, subscription);23}24
25public static List<OrderDto> toDtos(List<Order> orders) {26List<OrderDto> result = new ArrayList<>();27for (Order order : orders) {28result.add(toDto(order));29}30return result.stream()31.filter(distinctByKey(OrderDto::getLink))32.collect(Collectors.toList());33}34
35public static <T> Predicate<T> distinctByKey(Function<? super T, ?> keyExtractor) {36Set<Object> seen = ConcurrentHashMap.newKeySet();37return t -> seen.add(keyExtractor.apply(t));38}39
40}
41