From 53fb4ea94271736939eb5adb88984595a016230f Mon Sep 17 00:00:00 2001 From: iMoHax Date: Thu, 15 Oct 2015 15:49:41 +0300 Subject: [PATCH] filter set before build graph --- .../main/java/ru/trader/analysis/graph/AbstractGraph.java | 7 ++++++- .../java/ru/trader/analysis/graph/ConnectibleGraph.java | 7 +++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/ru/trader/analysis/graph/AbstractGraph.java b/core/src/main/java/ru/trader/analysis/graph/AbstractGraph.java index a4ad73f..4968614 100644 --- a/core/src/main/java/ru/trader/analysis/graph/AbstractGraph.java +++ b/core/src/main/java/ru/trader/analysis/graph/AbstractGraph.java @@ -28,12 +28,17 @@ public abstract class AbstractGraph implements Graph { callback.startBuild(start); minJumps = 1; root = getInstance(start, maxDeep, maxDeep); - GraphBuilder builder = createGraphBuilder(root, set, maxDeep - 1, limit); + Collection filteredSet = filtered(set); + GraphBuilder builder = createGraphBuilder(root, filteredSet, maxDeep - 1, limit); builder.compute(); onEnd(); callback.endBuild(); } + protected Collection filtered(Collection set){ + return set; + } + protected void onEnd(){ } diff --git a/core/src/main/java/ru/trader/analysis/graph/ConnectibleGraph.java b/core/src/main/java/ru/trader/analysis/graph/ConnectibleGraph.java index e904ac8..3110308 100644 --- a/core/src/main/java/ru/trader/analysis/graph/ConnectibleGraph.java +++ b/core/src/main/java/ru/trader/analysis/graph/ConnectibleGraph.java @@ -7,6 +7,7 @@ import ru.trader.core.Profile; import ru.trader.core.Ship; import java.util.Collection; +import java.util.stream.Collectors; public class ConnectibleGraph> extends AbstractGraph { private final static Logger LOG = LoggerFactory.getLogger(ConnectibleGraph.class); @@ -35,6 +36,12 @@ public class ConnectibleGraph> extends AbstractGraph super.build(start, set, profile.getJumps(), getShip().getTank()); } + @Override + protected Collection filtered(Collection set) { + final double maxDistance = getShip().getMaxJumpRange() * profile.getJumps(); + return set.parallelStream().filter(v -> root.getEntry().getDistance(v) <= maxDistance).collect(Collectors.toList()); + } + protected class ConnectibleGraphBuilder extends GraphBuilder { protected ConnectibleGraphBuilder(Vertex vertex, Collection set, int deep, double limit) {