refactoring connectible edge
This commit is contained in:
@@ -17,7 +17,7 @@ public abstract class AbstractGraph<T> implements Graph<T> {
|
||||
|
||||
protected Vertex<T> root;
|
||||
protected final List<Vertex<T>> vertexes;
|
||||
private final GraphCallBack callback;
|
||||
protected final GraphCallBack callback;
|
||||
|
||||
protected int minJumps;
|
||||
|
||||
|
||||
@@ -52,9 +52,9 @@ public class CCrawler<T extends Connectable<T>> extends Crawler<T> {
|
||||
double nextLimit;
|
||||
if (cEdge.isRefill()) {
|
||||
LOG.trace("Refill");
|
||||
nextLimit = getShip().getTank() - cEdge.getFuel();
|
||||
nextLimit = getShip().getTank() - cEdge.getFuelCost();
|
||||
} else {
|
||||
nextLimit = getProfile().withRefill() ? cEntry.getFuel() - cEdge.getFuel() : getShip().getTank();
|
||||
nextLimit = getProfile().withRefill() ? cEntry.getFuel() - cEdge.getFuelCost() : getShip().getTank();
|
||||
}
|
||||
return new CCostTraversalEntry(cEntry, edge, nextLimit);
|
||||
}
|
||||
@@ -83,7 +83,7 @@ public class CCrawler<T extends Connectable<T>> extends Crawler<T> {
|
||||
|
||||
protected boolean check(Edge<T> e){
|
||||
ConnectibleEdge<T> edge = (ConnectibleEdge<T>) e;
|
||||
return edge.getFuel() <= fuel || edge.getSource().getEntry().canRefill();
|
||||
return edge.getFuelCost() <= fuel || edge.getSource().getEntry().canRefill();
|
||||
}
|
||||
|
||||
protected ConnectibleEdge<T> wrap(Edge<T> edge){
|
||||
@@ -96,7 +96,10 @@ public class CCrawler<T extends Connectable<T>> extends Crawler<T> {
|
||||
refill = true;
|
||||
fuelCost = getShip().getFuelCost(distance);
|
||||
}
|
||||
return new ConnectibleEdge<>(edge.getSource(), edge.getTarget(), refill, fuelCost);
|
||||
ConnectibleEdge<T> cEdge = new ConnectibleEdge<>(edge.getSource(), edge.getTarget());
|
||||
cEdge.setRefill(refill);
|
||||
cEdge.setFuelCost(fuelCost);
|
||||
return cEdge;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,21 +3,27 @@ package ru.trader.analysis.graph;
|
||||
import ru.trader.graph.Connectable;
|
||||
|
||||
public class ConnectibleEdge<T extends Connectable<T>> extends Edge<T> {
|
||||
protected final boolean refill;
|
||||
protected final double fuel;
|
||||
protected boolean refill;
|
||||
protected double fuelCost;
|
||||
|
||||
public ConnectibleEdge(Vertex<T> source, Vertex<T> target, boolean refill, double fuel) {
|
||||
public ConnectibleEdge(Vertex<T> source, Vertex<T> target) {
|
||||
super(source, target);
|
||||
this.refill = refill;
|
||||
this.fuel = fuel;
|
||||
}
|
||||
|
||||
public boolean isRefill() {
|
||||
return refill;
|
||||
}
|
||||
|
||||
public double getFuel() {
|
||||
return fuel;
|
||||
protected void setRefill(boolean refill) {
|
||||
this.refill = refill;
|
||||
}
|
||||
|
||||
public double getFuelCost() {
|
||||
return fuelCost;
|
||||
}
|
||||
|
||||
public void setFuelCost(double fuel) {
|
||||
this.fuelCost = fuel;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -89,7 +89,10 @@ public class ConnectibleGraph<T extends Connectable<T>> extends AbstractGraph<T>
|
||||
|
||||
@Override
|
||||
protected ConnectibleEdge<T> createEdge(Vertex<T> target) {
|
||||
return new ConnectibleEdge<>(vertex, target, refill, fuelCost);
|
||||
ConnectibleEdge<T> res = new ConnectibleEdge<>(vertex, target);
|
||||
res.setRefill(refill);
|
||||
res.setFuelCost(fuelCost);
|
||||
return res;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user