Archived
0

refactoring connectible edge

This commit is contained in:
iMoHax
2015-07-02 13:08:14 +03:00
parent b5137de128
commit 25bff7d8f7
4 changed files with 25 additions and 13 deletions

View File

@@ -17,7 +17,7 @@ public abstract class AbstractGraph<T> implements Graph<T> {
protected Vertex<T> root; protected Vertex<T> root;
protected final List<Vertex<T>> vertexes; protected final List<Vertex<T>> vertexes;
private final GraphCallBack callback; protected final GraphCallBack callback;
protected int minJumps; protected int minJumps;

View File

@@ -52,9 +52,9 @@ public class CCrawler<T extends Connectable<T>> extends Crawler<T> {
double nextLimit; double nextLimit;
if (cEdge.isRefill()) { if (cEdge.isRefill()) {
LOG.trace("Refill"); LOG.trace("Refill");
nextLimit = getShip().getTank() - cEdge.getFuel(); nextLimit = getShip().getTank() - cEdge.getFuelCost();
} else { } 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); 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){ protected boolean check(Edge<T> e){
ConnectibleEdge<T> edge = (ConnectibleEdge<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){ protected ConnectibleEdge<T> wrap(Edge<T> edge){
@@ -96,7 +96,10 @@ public class CCrawler<T extends Connectable<T>> extends Crawler<T> {
refill = true; refill = true;
fuelCost = getShip().getFuelCost(distance); 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;
} }
} }
} }

View File

@@ -3,21 +3,27 @@ package ru.trader.analysis.graph;
import ru.trader.graph.Connectable; import ru.trader.graph.Connectable;
public class ConnectibleEdge<T extends Connectable<T>> extends Edge<T> { public class ConnectibleEdge<T extends Connectable<T>> extends Edge<T> {
protected final boolean refill; protected boolean refill;
protected final double fuel; 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); super(source, target);
this.refill = refill;
this.fuel = fuel;
} }
public boolean isRefill() { public boolean isRefill() {
return refill; return refill;
} }
public double getFuel() { protected void setRefill(boolean refill) {
return fuel; this.refill = refill;
}
public double getFuelCost() {
return fuelCost;
}
public void setFuelCost(double fuel) {
this.fuelCost = fuel;
} }
@Override @Override

View File

@@ -89,7 +89,10 @@ public class ConnectibleGraph<T extends Connectable<T>> extends AbstractGraph<T>
@Override @Override
protected ConnectibleEdge<T> createEdge(Vertex<T> target) { 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;
} }
} }