Skip to content
Snippets Groups Projects
Commit 473adf94 authored by User expired's avatar User expired
Browse files

introduced LinkCollection class

parent e116cca1
No related branches found
No related tags found
No related merge requests found
......@@ -5,6 +5,7 @@ import it.unibz.inf.isochrone.db.Database;
import it.unibz.inf.isochrone.network.AbstractOutput;
import it.unibz.inf.isochrone.network.IOutput;
import it.unibz.inf.isochrone.network.Link;
import it.unibz.inf.isochrone.network.LinkCollection;
import it.unibz.inf.isochrone.network.Location;
import it.unibz.inf.isochrone.network.MemoryOutput;
import it.unibz.inf.isochrone.network.Node;
......@@ -161,19 +162,18 @@ public abstract class Isochrone {
NodeConnection dConnections = null;
while ((node = nodeQueue.poll()) != null) {
final int nodeId = node.getId();
new NodeConnection(node);
final Collection<Link> targets = calcAdjLinks(nodeId);
final LinkCollection links = new LinkCollection(calcAdjLinks(nodeId));
output.addNode(node);
node.close();
cConnections = prepareContinuousLinks(node, targets);
cConnections = prepareContinuousLinks(node, links);
updateNodeQueue(expandContinuousLinks(cConnections));
dConnections = prepareDiscreteLinks(node, targets);
dConnections = prepareDiscreteLinks(node, links);
updateNodeQueue(expandDiscreteLinks(dConnections));
addLinks(output, targets);
output.addLinks(links.getContinuousTargets());
if (qIsExpiring && node.isExpired()) {
removeNode(nodeId);
}
......@@ -223,7 +223,7 @@ public abstract class Isochrone {
}
} else {
nConnection.addLink(targetNode, link);
}
}
}
/**
......@@ -359,26 +359,25 @@ public abstract class Isochrone {
}
}
private NodeConnection prepareContinuousLinks(final Node node, final Collection<Link> links) {
private NodeConnection prepareContinuousLinks(final Node node, final LinkCollection links) {
final NodeConnection nConnection = new NodeConnection(node);
final double nodeDistance = node.getDistance();
for (final Link link : links) {
if (link.isContinuous()) {
prepareLinkOffsets(link, nodeDistance);
addTargetNode(nConnection, node, link);
}
final Collection<Link> cLinks = links.getContinuousTargets();
for (final Link link : cLinks) {
prepareLinkOffsets(link, nodeDistance);
addTargetNode(nConnection, node, link);
}
return nConnection;
}
private NodeConnection prepareDiscreteLinks(final Node node, final Collection<Link> links) {
private NodeConnection prepareDiscreteLinks(final Node node, final LinkCollection links) {
final NodeConnection nConnection = new NodeConnection(node);
for (final Link link : links) {
if (!link.isContinuous()) {
addTargetNode(nConnection, node, link);
}
final Collection<Link> dLinks = links.getDiscreteTargets();
for (final Link link : dLinks) {
addTargetNode(nConnection, node, link);
}
return nConnection;
......@@ -427,14 +426,4 @@ public abstract class Isochrone {
}
}
// Private static methods
private static <T extends IOutput> void addLinks(final T output, final Collection<Link> links) {
final Double min = Double.MIN_VALUE;
for (final Link link : links) {
if (link.isContinuous() && !min.equals(link.getStartOffset())) {
output.addLink(link);
}
}
}
}
package it.unibz.inf.isochrone.network;
import java.util.ArrayList;
import java.util.Collection;
public class LinkCollection {
private final Collection<Link> cTargets;
private final Collection<Link> dTargets;
public LinkCollection(final Collection<Link> links) {
cTargets = new ArrayList<>();
dTargets = new ArrayList<>();
for (final Link l : links) {
if (l.isContinuous()) {
cTargets.add(l);
} else {
dTargets.add(l);
}
}
}
public Collection<Link> getContinuousTargets() {
return cTargets;
}
public Collection<Link> getDiscreteTargets() {
return dTargets;
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment