RoutingNode.java (1805B) download
1package osm.routing;
2
3import java.util.Comparator;
4
5import osm.geo.Point;
6
7/**
8 * Represents a node in a routing graph that implements the {@link Point}
9 * interface.
10 *
11 * @param <N> The type of the node.
12 */
13public interface RoutingNode<N> extends Point {
14
15 /**
16 * Gets the score associated with the node.
17 *
18 * @return The score value.
19 */
20 long getScore();
21
22 /**
23 * Sets the score value for the node.
24 *
25 * @param value The score value to set.
26 */
27 void setScore(long value);
28
29 /**
30 * Gets the heuristic score associated with the node.
31 *
32 * @return The heuristic score value.
33 */
34 long getHeuristicScore();
35
36 /**
37 * Sets the heuristic score for the node.
38 *
39 * @param total The total heuristic score to set.
40 */
41 void setHeuristicScore(long total);
42
43 /**
44 * Checks if the node has a parent.
45 *
46 * @return True if the node has a parent, false otherwise.
47 */
48 boolean hasParent();
49
50 /**
51 * Gets the parent node.
52 *
53 * @return The parent node.
54 */
55 N getParent();
56
57 /**
58 * Sets the parent node for this node.
59 *
60 * @param parent The parent node to set.
61 */
62 void setParent(N parent);
63
64 /**
65 * Creates a comparator based on the heuristic score for sorting nodes.
66 *
67 * @return A comparator for heuristic score sorting.
68 */
69 static Comparator<RoutingNode<?>> heuristicComparator() {
70 return Comparator.comparingLong(RoutingNode::getHeuristicScore);
71 }
72
73 /**
74 * Creates a comparator based on the score for sorting nodes.
75 *
76 * @return A comparator for score sorting.
77 */
78 static Comparator<RoutingNode<?>> scoreComparator() {
79 return Comparator.comparingLong(RoutingNode::getScore);
80 }
81}