rails.algorithms
Class RevenueAdapter

java.lang.Object
  extended by rails.algorithms.RevenueAdapter
All Implemented Interfaces:
java.lang.Runnable

public final class RevenueAdapter
extends java.lang.Object
implements java.lang.Runnable


Nested Class Summary
 class RevenueAdapter.EdgeTravel
           
 class RevenueAdapter.VertexVisit
           
 
Field Summary
protected static org.apache.log4j.Logger log
           
(package private)  org.jgrapht.Graph<NetworkVertex,NetworkEdge> rcGraph
           
 
Constructor Summary
RevenueAdapter(GameManagerI gameManager, NetworkGraphBuilder graphBuilder, NetworkCompanyGraph companyGraph, PublicCompanyI company, PhaseI phase)
           
 
Method Summary
 void addRevenueBonus(RevenueBonus bonus)
           
 void addRevenueListener(RevenueListener listener)
           
 boolean addStartVertices(java.util.Collection<NetworkVertex> startVertices)
           
 void addTrain(NetworkTrain train)
           
 boolean addTrain(TrainI railsTrain)
           
 boolean addTrainByString(java.lang.String trainString)
           
 void addVertexVisitSet(RevenueAdapter.VertexVisit visit)
           
 int calculateRevenue()
           
 int calculateRevenue(int startTrain, int finalTrain)
           
static RevenueAdapter createRevenueAdapter(GameManagerI gm, PublicCompanyI company, PhaseI phase)
           
 void drawOptimalRunAsPath(HexMap map)
           
(package private)  int dynamicEvaluation()
          is called by rc for dynamic evaluations
(package private)  int dynamicPrediction()
          is called by rc for dynamic predictions
 PublicCompanyI getCompany()
           
 java.util.List<RevenueTrainRun> getCurrentRun()
           
 java.util.Set<NetworkEdge> getEdges()
           
 org.jgrapht.graph.SimpleGraph<NetworkVertex,NetworkEdge> getGraph()
           
 java.util.List<RevenueTrainRun> getOptimalRun()
           
 java.lang.String getOptimalRunPrettyPrint(boolean includeDetails)
           
 PhaseI getPhase()
           
 int getRCEdgeId(NetworkEdge edge)
           
 org.jgrapht.Graph<NetworkVertex,NetworkEdge> getRCGraph()
           
 int getRCVertexId(NetworkVertex vertex)
           
 java.util.List<RevenueBonus> getRevenueBonuses()
           
 java.util.Set<NetworkVertex> getStartVertices()
           
 java.util.List<NetworkTrain> getTrains()
           
 int getVertexValue(NetworkVertex vertex, NetworkTrain train, PhaseI phase)
           
 java.lang.String getVertexValueAsString(NetworkVertex vertex, NetworkTrain train, PhaseI phase)
           
 java.util.List<RevenueAdapter.VertexVisit> getVertexVisitSets()
           
 java.util.Set<NetworkVertex> getVertices()
           
 void initRevenueCalculator(boolean useMultiGraph)
           
(package private)  void notifyRevenueListener(int revenue, boolean finalResult)
           
 void populateFromRails()
           
 void removeRevenueListener()
           
 void removeTrain(NetworkTrain train)
           
 void run()
           
 java.lang.String toString()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

log

protected static org.apache.log4j.Logger log

rcGraph

org.jgrapht.Graph<NetworkVertex,NetworkEdge> rcGraph
Constructor Detail

RevenueAdapter

public RevenueAdapter(GameManagerI gameManager,
                      NetworkGraphBuilder graphBuilder,
                      NetworkCompanyGraph companyGraph,
                      PublicCompanyI company,
                      PhaseI phase)
Method Detail

createRevenueAdapter

public static RevenueAdapter createRevenueAdapter(GameManagerI gm,
                                                  PublicCompanyI company,
                                                  PhaseI phase)

getCompany

public PublicCompanyI getCompany()

getPhase

public PhaseI getPhase()

getGraph

public org.jgrapht.graph.SimpleGraph<NetworkVertex,NetworkEdge> getGraph()

getVertices

public java.util.Set<NetworkVertex> getVertices()

getEdges

public java.util.Set<NetworkEdge> getEdges()

getRCGraph

public org.jgrapht.Graph<NetworkVertex,NetworkEdge> getRCGraph()

getRCVertexId

public int getRCVertexId(NetworkVertex vertex)

getRCEdgeId

public int getRCEdgeId(NetworkEdge edge)

getStartVertices

public java.util.Set<NetworkVertex> getStartVertices()

addStartVertices

public boolean addStartVertices(java.util.Collection<NetworkVertex> startVertices)

getTrains

public java.util.List<NetworkTrain> getTrains()

addTrain

public boolean addTrain(TrainI railsTrain)

addTrain

public void addTrain(NetworkTrain train)

removeTrain

public void removeTrain(NetworkTrain train)

addTrainByString

public boolean addTrainByString(java.lang.String trainString)

getVertexVisitSets

public java.util.List<RevenueAdapter.VertexVisit> getVertexVisitSets()

addVertexVisitSet

public void addVertexVisitSet(RevenueAdapter.VertexVisit visit)

getRevenueBonuses

public java.util.List<RevenueBonus> getRevenueBonuses()

addRevenueBonus

public void addRevenueBonus(RevenueBonus bonus)

populateFromRails

public void populateFromRails()

initRevenueCalculator

public void initRevenueCalculator(boolean useMultiGraph)

getVertexValue

public int getVertexValue(NetworkVertex vertex,
                          NetworkTrain train,
                          PhaseI phase)

getVertexValueAsString

public java.lang.String getVertexValueAsString(NetworkVertex vertex,
                                               NetworkTrain train,
                                               PhaseI phase)

calculateRevenue

public int calculateRevenue()

calculateRevenue

public int calculateRevenue(int startTrain,
                            int finalTrain)

getOptimalRun

public java.util.List<RevenueTrainRun> getOptimalRun()

getCurrentRun

public java.util.List<RevenueTrainRun> getCurrentRun()

dynamicEvaluation

int dynamicEvaluation()
is called by rc for dynamic evaluations


dynamicPrediction

int dynamicPrediction()
is called by rc for dynamic predictions


addRevenueListener

public void addRevenueListener(RevenueListener listener)

notifyRevenueListener

void notifyRevenueListener(int revenue,
                           boolean finalResult)

run

public void run()
Specified by:
run in interface java.lang.Runnable

removeRevenueListener

public void removeRevenueListener()

getOptimalRunPrettyPrint

public java.lang.String getOptimalRunPrettyPrint(boolean includeDetails)

drawOptimalRunAsPath

public void drawOptimalRunAsPath(HexMap map)

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object