net.commerce.zocalo.experiment
Class Session
java.lang.Object
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.
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 |
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
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)
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)