From 7f0b90e19e48932959abbdb45f652befb2768fea Mon Sep 17 00:00:00 2001 From: iMoHax Date: Tue, 21 Jul 2015 16:00:33 +0300 Subject: [PATCH] fix search route if not target --- .../java/ru/trader/analysis/RouteSearcher.java | 1 - .../analysis/RouteSpecificationByTargets.java | 14 +++++++++++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/core/src/main/java/ru/trader/analysis/RouteSearcher.java b/core/src/main/java/ru/trader/analysis/RouteSearcher.java index 5c22784..07bfee1 100644 --- a/core/src/main/java/ru/trader/analysis/RouteSearcher.java +++ b/core/src/main/java/ru/trader/analysis/RouteSearcher.java @@ -58,7 +58,6 @@ public class RouteSearcher { int count = (int) Math.ceil(scorer.getProfile().getRoutesCount() / fVendors.size()); RouteSpecification specification = RouteSpecificationByTargets.any(toVendors); for (Vendor fromVendor : fVendors) { - count = count / toVendors.size(); Collection routes = search(fromVendor, fromVendor, vendors, count, specification); res.addAll(routes); } diff --git a/core/src/main/java/ru/trader/analysis/RouteSpecificationByTargets.java b/core/src/main/java/ru/trader/analysis/RouteSpecificationByTargets.java index f55009f..1da710a 100644 --- a/core/src/main/java/ru/trader/analysis/RouteSpecificationByTargets.java +++ b/core/src/main/java/ru/trader/analysis/RouteSpecificationByTargets.java @@ -10,9 +10,11 @@ import java.util.Iterator; public class RouteSpecificationByTargets implements RouteSpecification { protected final Collection targets; protected final boolean all; + protected final boolean targetOnly; - private RouteSpecificationByTargets(Collection targets, boolean all) { + private RouteSpecificationByTargets(Collection targets, boolean all, boolean targetOnly) { this.all = all; + this.targetOnly = targetOnly; this.targets = new ArrayList<>(targets); } @@ -32,6 +34,9 @@ public class RouteSpecificationByTargets implements RouteSpecification { private boolean containsAny(Edge edge, Traversal entry) { T obj = edge.getTarget().getEntry(); if (targets.contains(obj)) return true; + if (targetOnly){ + return false; + } Iterator> iterator = entry.routeIterator(); while (iterator.hasNext()){ if (targets.contains(iterator.next().getTarget().getEntry())){ @@ -42,11 +47,14 @@ public class RouteSpecificationByTargets implements RouteSpecification { } public static RouteSpecificationByTargets all(Collection targets){ - return new RouteSpecificationByTargets<>(targets, true); + return new RouteSpecificationByTargets<>(targets, true, false); } public static RouteSpecificationByTargets any(Collection targets){ - return new RouteSpecificationByTargets<>(targets, false); + return new RouteSpecificationByTargets<>(targets, false, true); } + public static RouteSpecificationByTargets containAny(Collection targets){ + return new RouteSpecificationByTargets<>(targets, false, false); + } }