Archived
0

implement search seller of some items

This commit is contained in:
Mo
2016-04-25 13:55:10 +03:00
parent a23ac408d9
commit 118786afba
6 changed files with 101 additions and 20 deletions

View File

@@ -3,8 +3,11 @@ package ru.trader.analysis;
import ru.trader.core.*;
import java.util.Collection;
import java.util.HashSet;
import java.util.NavigableSet;
import java.util.Set;
import java.util.function.Predicate;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class FilteredMarket {
@@ -90,6 +93,33 @@ public class FilteredMarket {
return res.filter(o -> !MarketUtils.isIncorrect(o) && !filter.isFiltered(o));
}
public Stream<Offer> getOffers(OFFER_TYPE offerType, Collection<Item> items){
final Set<Vendor> vendors = new HashSet<>();
Stream<Offer> res = null;
for (Item item : items) {
NavigableSet<Offer> offers = market.getStat(offerType, item).getOffers();
Stream<Offer> s;
if (offerType.getOrder() > 0)
s = offers.stream().filter(o -> vendors.contains(o.getVendor()));
else
s = offers.descendingSet().stream().filter(o -> vendors.contains(o.getVendor()));
Collection<Vendor> v = offers.stream().map(Offer::getVendor).collect(Collectors.toList());
if (res == null){
res = s;
vendors.addAll(v);
} else {
res = Stream.concat(res, s);
vendors.retainAll(v);
}
}
if (res == null) return Stream.empty();
if (disableFilter){
return res;
}
return res.filter(o -> !MarketUtils.isIncorrect(o) && !filter.isFiltered(o));
}
public FilteredVendor getFiltered(Vendor vendor){
return new FilteredVendor(vendor, filter.getFilter(vendor));
}

View File

@@ -39,6 +39,10 @@ public class MarketAnalyzer {
return market.getOffers(offerType, item).filter(o -> !filter.isFiltered(o.getVendor())).collect(Collectors.toList());
}
public List<Offer> getOffers(OFFER_TYPE offerType, Collection<Item> items, MarketFilter filter){
return market.getOffers(offerType, items).filter(o -> !filter.isFiltered(o.getVendor())).collect(Collectors.toList());
}
public List<Vendor> getVendors(MarketFilter filter){
return market.getVendors().filter(v -> !filter.isFiltered(v)).collect(Collectors.toList());
}