diff --git a/core/src/main/java/ru/trader/core/MarketAnalyzer.java b/core/src/main/java/ru/trader/core/MarketAnalyzer.java index 587081e..758a0ab 100644 --- a/core/src/main/java/ru/trader/core/MarketAnalyzer.java +++ b/core/src/main/java/ru/trader/core/MarketAnalyzer.java @@ -196,15 +196,11 @@ public class MarketAnalyzer { public Collection getTopRoutes(int limit){ LOG.debug("Get top {}", limit); LimitedQueue top = new LimitedQueue<>(limit); - Collection vendors = getVendors(new CrawlerSpecificator(), true); + Collection vendors = getVendors(new CrawlerSpecificator(), false, 9); callback.start(vendors.size()); - Iterator iterator = market.getMarkets(false).iterator(); - while (iterator.hasNext()){ - Vendor vendor = iterator.next(); + for (Vendor vendor : vendors) { if (callback.isCancel()) break; - CrawlerSpecificator specificator = new CrawlerSpecificator(); - specificator.target(vendor); - Collection paths = searcher.search(vendor, vendor, vendors, 3, specificator); + Collection paths = getRoutes(vendor, vendor); top.addAll(paths); callback.inc(); } @@ -295,6 +291,10 @@ public class MarketAnalyzer { } private Collection getVendors(CrawlerSpecificator specificator, boolean withTransit){ + return getVendors(specificator, withTransit, profile.getMinVendorRating()); + + } + private Collection getVendors(CrawlerSpecificator specificator, boolean withTransit, double minRating){ List transits = withTransit ? market.get().map(Place::asTransit).collect(Collectors.toList()) : new ArrayList<>(); Set vendors; if (!specificator.isFullScan() || specificator.getMinHop() >= profile.getLands()){ @@ -306,7 +306,7 @@ public class MarketAnalyzer { Collection removes = new ArrayList<>(500); vendors.removeIf(v -> { Scorer.Rating rating = ratings.getRating(v); - if (rating.getRate() <= profile.getMinVendorRating()){ + if (rating.getRate() <= minRating){ if (specificator.contains(v)){ removes.add(rating); }