From 5dfd8fe57103878eb0bdbb9af2c16ca2a95835ca Mon Sep 17 00:00:00 2001 From: iMoHax Date: Thu, 15 Oct 2015 15:25:50 +0300 Subject: [PATCH] increase lands count if need more --- .../ru/trader/analysis/RouteSearcher.java | 19 +++++++++++++------ .../analysis/graph/CrawlerSpecification.java | 4 ++++ 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/core/src/main/java/ru/trader/analysis/RouteSearcher.java b/core/src/main/java/ru/trader/analysis/RouteSearcher.java index a18fe27..574ce10 100644 --- a/core/src/main/java/ru/trader/analysis/RouteSearcher.java +++ b/core/src/main/java/ru/trader/analysis/RouteSearcher.java @@ -70,8 +70,10 @@ public class RouteSearcher { vGraph.build(source, vendors); LOG.trace("Graph is builds"); RouteCollector collector = new RouteCollector(); - Crawler crawler = vGraph.crawler(specificator.build(vendors, collector::add), callback); - crawler.setMaxSize(scorer.getProfile().getLands()); + VendorsCrawlerSpecification specification = specificator.build(vendors, collector::add); + Crawler crawler = vGraph.crawler(specification, callback); + int lands = Math.max(scorer.getProfile().getLands(), specification.getMinLands()); + crawler.setMaxSize(lands); crawler.findMin(target, count); return collector.get(); } @@ -84,11 +86,16 @@ public class RouteSearcher { LOG.trace("Graph is builds"); RouteCollector collector = new RouteCollector(); specificator.setGroupCount(vendors.size()); - Crawler crawler = vGraph.crawler(specificator.build(vendors, collector::add, new LoopRouteSpecification<>(true), true), callback); - crawler.setMaxSize(scorer.getProfile().getLands()); + + VendorsCrawlerSpecification specification = specificator.build(vendors, collector::add, new LoopRouteSpecification<>(true), true); + int lands = Math.max(scorer.getProfile().getLands(), specification.getMinLands()); + Crawler crawler = vGraph.crawler(specification, callback); + crawler.setMaxSize(lands); crawler.findMin(source, vendors.size()); - crawler = vGraph.crawler(specificator.build(vendors, collector::add, new RouteSpecificationByTarget<>(source), false), callback); - crawler.setMaxSize(scorer.getProfile().getLands()); + specification = specificator.build(vendors, collector::add, new RouteSpecificationByTarget<>(source), false); + lands = Math.max(scorer.getProfile().getLands(), specification.getMinLands()); + crawler = vGraph.crawler(specification, callback); + crawler.setMaxSize(lands); crawler.findMin(source, 1); List routes = collector.get(); routes.sort((r1, r2) -> { diff --git a/core/src/main/java/ru/trader/analysis/graph/CrawlerSpecification.java b/core/src/main/java/ru/trader/analysis/graph/CrawlerSpecification.java index bd2593d..c9b0a68 100644 --- a/core/src/main/java/ru/trader/analysis/graph/CrawlerSpecification.java +++ b/core/src/main/java/ru/trader/analysis/graph/CrawlerSpecification.java @@ -15,4 +15,8 @@ public interface CrawlerSpecification { public int getGroupCount(); + public default int getMinLands(){ + return routeSpecification() != null ? routeSpecification().matchCount() : 0; + } + }