use of net.parostroj.timetable.model.Node in project grafikon by jub77.
the class FreightConnectionAnalysis method toCenter.
void toCenter(final Context context) {
Collection<ToRegionConnection> regions = getToCenterRegions(context);
if (regions.isEmpty()) {
context.stage = Stage.NO_CONNECTION;
} else {
for (ToRegionConnection conn : regions) {
Context nContext = conn.context;
Node centerNode = conn.center;
Set<TrainPath> set = finder.getConnectionFromTo(nContext.current, centerNode).stream().map(FreightConnectionPath::getPath).collect(toSet());
if (!set.isEmpty()) {
nContext.steps.add(new StepImpl(nContext.current, centerNode, set));
nContext.current = centerNode;
boolean noDirectConnection = finder.getConnectionFromTo(nContext.current, to).isEmpty();
if (noDirectConnection && conn.transitive) {
nContext.stage = Stage.BETWEEN_CENTERS;
} else if (conn.transitive || intersects(to.getRegions(), centerNode.getCenterRegions())) {
nContext.stage = Stage.TO_NODE;
} else {
nContext.stage = Stage.NO_CONNECTION;
}
} else {
nContext.stage = Stage.NO_CONNECTION;
}
}
}
}
use of net.parostroj.timetable.model.Node in project grafikon by jub77.
the class FreightConnectionAnalysis method betweenCenters.
void betweenCenters(final Context context) {
Collection<ToRegionConnection> regions = this.getBetweenCenterRegions(context);
if (regions.isEmpty()) {
context.stage = Stage.NO_CONNECTION;
} else {
for (ToRegionConnection pair : regions) {
Context nContext = pair.context;
Node centerNode = pair.center;
Optional<NodeConnectionEdges> regionConn = finder.getRegionConnections().stream().filter(c -> c.getFrom() == nContext.current && c.getTo() == centerNode).findAny();
if (regionConn.isPresent()) {
NodeConnectionEdges conn = regionConn.get();
conn.getEdges().stream().map(StepImpl::new).forEach(nContext.steps::add);
nContext.current = centerNode;
nContext.stage = centerNode == to ? Stage.CONNECTION : Stage.TO_NODE;
} else {
nContext.stage = Stage.NO_CONNECTION;
}
}
}
}
use of net.parostroj.timetable.model.Node in project grafikon by jub77.
the class NodeFreightImpl method merge.
private FreightConnectionVia merge(List<? extends FreightConnectionVia> connections, Function<FreightConnection, FreightDestination> destinationCreation) {
if (connections.size() == 1) {
return connections.get(0);
} else {
// merge
FreightDestination destination = connections.stream().findAny().map(destinationCreation).get();
Transport transport = connections.stream().map(FreightConnectionVia::getTransport).reduce(Transport::merge).get();
Node lFrom = connections.stream().findAny().map(FreightConnectionVia::getFrom).get();
return FreightFactory.createFreightNodeConnection(lFrom, destination, transport);
}
}
use of net.parostroj.timetable.model.Node in project grafikon by jub77.
the class NetGraphComponent method createConnectionHandler.
@Override
protected mxConnectionHandler createConnectionHandler() {
return new mxConnectionHandler(this) {
@Override
public boolean isValidTarget(Object cell) {
if (cell != null) {
Object object = ((mxCell) cell).getValue();
if (object instanceof Node) {
Graph<Node, Line> net = getNet();
Node targetNode = (Node) object;
Node sourceNode = (Node) ((mxCell) source.getCell()).getValue();
return !net.containsEdge(sourceNode, targetNode);
}
}
return super.isValidTarget(cell);
}
};
}
use of net.parostroj.timetable.model.Node in project grafikon by jub77.
the class TrainDiagramBuilder method setNet.
public void setNet(LSNet lsNet) throws LSException {
Net net = lsNet.createNet(this.diagram);
this.diagram.setNet(net);
// add regions
if (lsNet.getRegions() != null) {
Collection<DelayedAttributes<Region>> regions = new ArrayList<>();
for (LSRegion lsRegion : lsNet.getRegions()) {
DelayedAttributes<Region> daRegion = lsRegion.createRegion(diagram);
net.getRegions().add(daRegion.getObject());
regions.add(daRegion);
}
for (DelayedAttributes<Region> daRegion : regions) {
daRegion.addAttributes();
}
}
// add line classes
if (lsNet.getLineClasses() != null) {
for (LSLineClass lsLineClass : lsNet.getLineClasses()) {
net.getLineClasses().add(lsLineClass.createLineClass());
}
}
// create nodes ...
if (lsNet.getNodes() != null) {
for (LSNode lsNode : lsNet.getNodes()) {
Node node = lsNode.createNode(diagram.getPartFactory(), diagram::getObjectById);
net.addNode(node);
}
}
// create lines ...
if (lsNet.getLines() != null) {
for (LSLine lsLine : lsNet.getLines()) {
Line line = lsLine.createLine(diagram);
Node from = net.getNodeById(lsLine.getFrom());
Node to = net.getNodeById(lsLine.getTo());
net.addLine(from, to, line);
}
}
}
Aggregations