net.commerce.zocalo.experiment
Class Session

java.lang.Object
  extended by net.commerce.zocalo.experiment.Session
Direct Known Subclasses:
JudgingSession, LendingSession, VotingSession

public class Session
extends java.lang.Object

Manage a session of an experiment. Handles timing, scoring, and initialization from config file.


Field Summary
 Quantity chartScale
           
static java.lang.String END_SCORING_TRANSITION
           
static java.lang.String END_TRADING_TRANSITION
           
 Quantity majorUnit
           
 Quantity minorUnit
           
protected  java.util.Properties props
           
 
Constructor Summary
Session(java.util.Properties props, org.mortbay.cometd.AbstractBayeux bayeux)
           
Session(java.util.Properties props, java.lang.String logFile, org.mortbay.cometd.AbstractBayeux bayeux)
           
 
Method Summary
 java.lang.String aboveThresholdMessage()
           
protected  void accrueDividendsAndBonuses(Price average, Quantity judged, Quantity judgingTarget)
           
protected  void appendToErrorMessage(java.lang.String message)
           
protected  TraderRole basicRoleForSession(java.lang.String role)
           
 java.lang.String belowThresholdMessage()
           
protected  Quantity bookFundingRequired(java.util.Properties props)
           
static boolean[] buildDormantArray(int rounds, java.lang.String playerDormancy)
           
 Quantity calculateEarnings(java.lang.String userName)
           
protected  void calculateScores()
           
protected  void calculateScores(Price average)
           
static java.lang.String cannotStartRoundMessage()
           
 void closeSessionAppenders()
           
protected  java.lang.String[] endowedRoles()
           
 void endSession()
           
 void endTrading(boolean manual)
           
static java.lang.String endTradingLabel()
           
protected  java.lang.String eventOutcome(java.util.Properties props)
           
 java.lang.String[] experimenterButtons()
           
static java.lang.String findSessionReplaceRoundString(java.lang.String label)
           
 Quantity getChartScale()
           
 BinaryClaim getClaim()
           
 java.lang.String getCommonMessageLabel()
           
 int getCurrentRound()
           
 Quantity getDividend(AbstractSubject subject, int round)
           
 Quantity getDividend(int round)
           
 java.lang.String getEarningsHint(java.lang.String name, int round)
           
 java.lang.String getErrorMessage()
           
 java.lang.String getLogoPath()
           
 Quantity getMajorUnit()
           
 BinaryMarket getMarket()
           
 java.lang.String getMessageLabel()
           
 Quantity getMinorUnit()
           
 boolean getPayDividend(AbstractSubject subject, int round)
           
protected  StateHolder getPhase()
           
 AbstractSubject getPlayer(java.lang.String name)
           
 java.lang.String getPriceHint(java.lang.String playerName, int round)
           
 Quantity getPrivateDividend(AbstractSubject subject, int round)
           
 Quantity getRemainingDividend(AbstractSubject trader, int round)
           
 java.lang.String getRoundLabel()
           
static java.lang.String getRoundLabelOrDefault()
           
 int getShareLimit(TradingSubject trader)
           
 java.lang.String getSharesLabel()
           
 boolean getShowEarnings()
           
protected  MockBayeuxChannel getTradeHistory()
           
 TradingSubject getTrader(User user)
           
protected  java.util.Collection<User> getTraders()
           
 User getUserOrNull(java.lang.String userName)
           
 void ifScoring(StatusAdaptor ifScoring)
           
 void ifTrading(StatusAdaptor adaptor)
           
protected  java.util.HashMap<java.lang.String,Role> initializeRoles(java.util.Properties props)
           
 Quantity initialTraderTickets()
           
 boolean isCarryForward()
           
protected  boolean lastRound()
           
protected  Quantity lastTradeValue()
           
protected  void logCommonMessages(org.apache.log4j.Logger log)
           
protected static void logEvent(java.lang.String eventName)
           
 void logFileLinks(java.lang.StringBuffer buff, PrintStringAdaptor printer)
           
protected  void logParameterCombinations(java.lang.String[] first, java.lang.String[] second, org.apache.log4j.Logger log, boolean checkByRound)
           
protected  void logSessionInitialization()
           
protected  void logTransitionEvent(java.lang.String transitionLabel, java.lang.String displayText)
           
static Session make(java.util.Properties props, org.mortbay.cometd.AbstractBayeux bayeux, java.lang.String logFile)
           
 boolean marketIsActive()
           
 Price marketPrice(Quantity q)
           
 Price maxPrice()
           
 java.lang.String message()
           
 java.lang.String message(int round)
           
 java.util.Iterator<java.lang.String> playerNameIterator()
           
 java.util.Iterator playerNameSortedIterator()
           
 boolean privateDividendsInUse()
           
protected  void provideCash(Trader trader, Quantity amount)
           
protected  void recordScoreExplanation(AbstractSubject player, boolean keepingScore, java.lang.String outcome)
           
protected  void renderScore(java.lang.StringBuffer buff, java.lang.String score)
           
 java.lang.String replaceRoundString(java.lang.String label)
           
 boolean reservesAreRequired()
           
 int rounds()
           
protected  SessionStatusAdaptor sessionEndTradingAdaptor(Session s)
           
static org.apache.log4j.Logger sessionLogger()
           
protected  void setPhase(StateHolder newPhase)
           
 java.lang.String showEarningsSummary(java.lang.String userName)
           
 void startNextRound()
           
 void startNextRound(long duration)
           
 void startNextTimedRound()
           
static java.lang.String startRoundActionLabel()
           
static java.lang.String startRoundText()
           
static java.lang.String startRoundTransitionLabel()
           
 void startSession()
           
 void startSession(long duration)
           
 java.lang.String stateSpecificDisplay()
           
 java.lang.String[] stateSpecificTraderButtons()
           
 java.lang.String stateSpecificTraderHtml(java.lang.String claimName, java.lang.String userName)
           
static java.lang.String stopRoundActionLabel()
           
 int timeLimit()
           
 java.lang.String timeRemaining()
           
 void webAction(java.lang.String userName, java.lang.String parameter)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

END_TRADING_TRANSITION

public static final java.lang.String END_TRADING_TRANSITION
See Also:
Constant Field Values

END_SCORING_TRANSITION

public static final java.lang.String END_SCORING_TRANSITION
See Also:
Constant Field Values

props

protected java.util.Properties props

minorUnit

public Quantity minorUnit

majorUnit

public Quantity majorUnit

chartScale

public Quantity chartScale
Constructor Detail

Session

public Session(java.util.Properties props,
               org.mortbay.cometd.AbstractBayeux bayeux)

Session

public Session(java.util.Properties props,
               java.lang.String logFile,
               org.mortbay.cometd.AbstractBayeux bayeux)
Method Detail

sessionLogger

public static org.apache.log4j.Logger sessionLogger()

logEvent

protected static void logEvent(java.lang.String eventName)

make

public static Session make(java.util.Properties props,
                           org.mortbay.cometd.AbstractBayeux bayeux,
                           java.lang.String logFile)

initializeRoles

protected java.util.HashMap<java.lang.String,Role> initializeRoles(java.util.Properties props)

basicRoleForSession

protected TraderRole basicRoleForSession(java.lang.String role)

setPhase

protected void setPhase(StateHolder newPhase)

sessionEndTradingAdaptor

protected SessionStatusAdaptor sessionEndTradingAdaptor(Session s)

logSessionInitialization

protected void logSessionInitialization()

appendToErrorMessage

protected void appendToErrorMessage(java.lang.String message)

endowedRoles

protected java.lang.String[] endowedRoles()

logParameterCombinations

protected void logParameterCombinations(java.lang.String[] first,
                                        java.lang.String[] second,
                                        org.apache.log4j.Logger log,
                                        boolean checkByRound)

logCommonMessages

protected void logCommonMessages(org.apache.log4j.Logger log)

getTrader

public TradingSubject getTrader(User user)

bookFundingRequired

protected Quantity bookFundingRequired(java.util.Properties props)

buildDormantArray

public static boolean[] buildDormantArray(int rounds,
                                          java.lang.String playerDormancy)

logTransitionEvent

protected void logTransitionEvent(java.lang.String transitionLabel,
                                  java.lang.String displayText)

startSession

public void startSession()

startSession

public void startSession(long duration)

startNextRound

public void startNextRound()

startNextTimedRound

public void startNextTimedRound()

startNextRound

public void startNextRound(long duration)

endTrading

public void endTrading(boolean manual)

endSession

public void endSession()

closeSessionAppenders

public void closeSessionAppenders()

lastTradeValue

protected Quantity lastTradeValue()

calculateScores

protected void calculateScores()
                        throws ScoreException
Throws:
ScoreException

calculateScores

protected void calculateScores(Price average)
                        throws ScoreException
Throws:
ScoreException

accrueDividendsAndBonuses

protected void accrueDividendsAndBonuses(Price average,
                                         Quantity judged,
                                         Quantity judgingTarget)
                                  throws ScoreException
Throws:
ScoreException

eventOutcome

protected java.lang.String eventOutcome(java.util.Properties props)

recordScoreExplanation

protected void recordScoreExplanation(AbstractSubject player,
                                      boolean keepingScore,
                                      java.lang.String outcome)

rounds

public int rounds()

getPriceHint

public java.lang.String getPriceHint(java.lang.String playerName,
                                     int round)

getDividend

public Quantity getDividend(int round)
                     throws ScoreException
Throws:
ScoreException

getDividend

public Quantity getDividend(AbstractSubject subject,
                            int round)
                     throws ScoreException
Throws:
ScoreException

getPrivateDividend

public Quantity getPrivateDividend(AbstractSubject subject,
                                   int round)

getPayDividend

public boolean getPayDividend(AbstractSubject subject,
                              int round)

getShareLimit

public int getShareLimit(TradingSubject trader)

getEarningsHint

public java.lang.String getEarningsHint(java.lang.String name,
                                        int round)

message

public java.lang.String message(int round)

message

public java.lang.String message()

getErrorMessage

public java.lang.String getErrorMessage()

timeLimit

public int timeLimit()

initialTraderTickets

public Quantity initialTraderTickets()

getPlayer

public AbstractSubject getPlayer(java.lang.String name)

getUserOrNull

public User getUserOrNull(java.lang.String userName)

playerNameIterator

public java.util.Iterator<java.lang.String> playerNameIterator()

playerNameSortedIterator

public java.util.Iterator playerNameSortedIterator()

getTraders

protected java.util.Collection<User> getTraders()

getCurrentRound

public int getCurrentRound()

marketIsActive

public boolean marketIsActive()

getClaim

public BinaryClaim getClaim()

getMarket

public BinaryMarket getMarket()

logFileLinks

public void logFileLinks(java.lang.StringBuffer buff,
                         PrintStringAdaptor printer)

lastRound

protected boolean lastRound()

timeRemaining

public java.lang.String timeRemaining()

calculateEarnings

public Quantity calculateEarnings(java.lang.String userName)

getChartScale

public Quantity getChartScale()

getMajorUnit

public Quantity getMajorUnit()

getMinorUnit

public Quantity getMinorUnit()

isCarryForward

public boolean isCarryForward()

getShowEarnings

public boolean getShowEarnings()

getCommonMessageLabel

public java.lang.String getCommonMessageLabel()

getMessageLabel

public java.lang.String getMessageLabel()

getRoundLabel

public java.lang.String getRoundLabel()

getRoundLabelOrDefault

public static java.lang.String getRoundLabelOrDefault()

getSharesLabel

public java.lang.String getSharesLabel()

aboveThresholdMessage

public java.lang.String aboveThresholdMessage()

belowThresholdMessage

public java.lang.String belowThresholdMessage()

maxPrice

public Price maxPrice()

marketPrice

public Price marketPrice(Quantity q)

getLogoPath

public java.lang.String getLogoPath()

privateDividendsInUse

public boolean privateDividendsInUse()

ifScoring

public void ifScoring(StatusAdaptor ifScoring)

ifTrading

public void ifTrading(StatusAdaptor adaptor)

getPhase

protected StateHolder getPhase()

experimenterButtons

public java.lang.String[] experimenterButtons()

startRoundActionLabel

public static java.lang.String startRoundActionLabel()

startRoundTransitionLabel

public static java.lang.String startRoundTransitionLabel()

startRoundText

public static java.lang.String startRoundText()

cannotStartRoundMessage

public static java.lang.String cannotStartRoundMessage()

stopRoundActionLabel

public static java.lang.String stopRoundActionLabel()

endTradingLabel

public static java.lang.String endTradingLabel()

findSessionReplaceRoundString

public static java.lang.String findSessionReplaceRoundString(java.lang.String label)

replaceRoundString

public java.lang.String replaceRoundString(java.lang.String label)

stateSpecificTraderHtml

public java.lang.String stateSpecificTraderHtml(java.lang.String claimName,
                                                java.lang.String userName)

stateSpecificTraderButtons

public java.lang.String[] stateSpecificTraderButtons()

stateSpecificDisplay

public java.lang.String stateSpecificDisplay()

getTradeHistory

protected MockBayeuxChannel getTradeHistory()

webAction

public void webAction(java.lang.String userName,
                      java.lang.String parameter)

showEarningsSummary

public java.lang.String showEarningsSummary(java.lang.String userName)

renderScore

protected void renderScore(java.lang.StringBuffer buff,
                           java.lang.String score)

getRemainingDividend

public Quantity getRemainingDividend(AbstractSubject trader,
                                     int round)
                              throws ScoreException
Throws:
ScoreException

reservesAreRequired

public boolean reservesAreRequired()

provideCash

protected void provideCash(Trader trader,
                           Quantity amount)