From a9e80ec693062bfea58d3c047855b9ccf34b7d2a Mon Sep 17 00:00:00 2001 From: iMoHax Date: Thu, 19 Nov 2015 15:33:38 +0300 Subject: [PATCH] add full scan options to specificator --- .../java/ru/trader/analysis/CrawlerSpecificator.java | 10 ++++++++++ .../main/java/ru/trader/analysis/RouteSearcher.java | 2 ++ core/src/main/java/ru/trader/core/MarketAnalyzer.java | 5 ++--- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/ru/trader/analysis/CrawlerSpecificator.java b/core/src/main/java/ru/trader/analysis/CrawlerSpecificator.java index 866f447..91ba8c2 100644 --- a/core/src/main/java/ru/trader/analysis/CrawlerSpecificator.java +++ b/core/src/main/java/ru/trader/analysis/CrawlerSpecificator.java @@ -15,6 +15,7 @@ public class CrawlerSpecificator { private final Collection offers; private int groupCount; private boolean byTime; + private boolean fullScan; public CrawlerSpecificator() { any = new HashSet<>(); @@ -22,12 +23,21 @@ public class CrawlerSpecificator { containsAny = new HashSet<>(); offers = new ArrayList<>(); byTime = false; + fullScan = true; } public void setByTime(boolean byTime){ this.byTime = byTime; } + public void setFullScan(boolean fullScan) { + this.fullScan = fullScan; + } + + public boolean isFullScan() { + return fullScan; + } + public void all(Collection vendors){ all.addAll(vendors); } diff --git a/core/src/main/java/ru/trader/analysis/RouteSearcher.java b/core/src/main/java/ru/trader/analysis/RouteSearcher.java index 82ae54b..814d0af 100644 --- a/core/src/main/java/ru/trader/analysis/RouteSearcher.java +++ b/core/src/main/java/ru/trader/analysis/RouteSearcher.java @@ -86,6 +86,7 @@ public class RouteSearcher { VendorsCrawlerSpecification specification = specificator.build(vendors, collector::add); Crawler crawler = vGraph.crawler(specification, callback); int lands = Math.max(scorer.getProfile().getLands(), specification.getMinLands()); + if (!specificator.isFullScan()) lands = specificator.getMinHop(); crawler.setMaxSize(lands); crawler.findMin(target, count); return collector.get(); @@ -108,6 +109,7 @@ public class RouteSearcher { crawler.findMin(source, vendors.size()); specification = specificator.build(vendors, collector::add, new RouteSpecificationByTarget<>(source), false); lands = Math.max(scorer.getProfile().getLands(), specification.getMinLands()); + if (!specificator.isFullScan()) lands = specificator.getMinHop(); crawler = vGraph.crawler(specification, callback); crawler.setMaxSize(lands); crawler.findMin(source, 1); diff --git a/core/src/main/java/ru/trader/core/MarketAnalyzer.java b/core/src/main/java/ru/trader/core/MarketAnalyzer.java index a276b0f..cc90508 100644 --- a/core/src/main/java/ru/trader/core/MarketAnalyzer.java +++ b/core/src/main/java/ru/trader/core/MarketAnalyzer.java @@ -286,13 +286,12 @@ public class MarketAnalyzer { private Collection getVendors(CrawlerSpecificator specificator, boolean withTransit){ Collection vendors; - if (specificator.getMinHop() >= profile.getLands()){ + if (!specificator.isFullScan() || specificator.getMinHop() >= profile.getLands()){ vendors = withTransit ? market.get().map(Place::asTransit).collect(Collectors.toList()) : new ArrayList<>(); - market.getVendors().filter(specificator::contains).forEach(vendors::add); } else { vendors = market.getMarkets(withTransit).collect(Collectors.toList()); - vendors = specificator.getVendors(vendors); } + vendors = specificator.getVendors(vendors); return vendors; }