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) {