[virtualcommons-svn] commit/foraging: 4 new changesets
Status: Beta
Brought to you by:
alllee
From: Bitbucket <com...@bi...> - 2012-01-17 23:19:01
|
4 new commits in foraging: https://bitbucket.org/virtualcommons/foraging/changeset/c9d18da5330d/ changeset: c9d18da5330d user: alllee date: 2012-01-18 00:14:02 summary: templatizing client debriefing in RoundConfiguration / ServerConfiguration affected #: 2 files diff -r 71e89c0d123b30b6a9deebf1f9a3d32124512945 -r c9d18da5330d7b493c22c8fb65994c5dcef9b014 src/main/java/edu/asu/commons/foraging/conf/RoundConfiguration.java --- a/src/main/java/edu/asu/commons/foraging/conf/RoundConfiguration.java +++ b/src/main/java/edu/asu/commons/foraging/conf/RoundConfiguration.java @@ -787,6 +787,29 @@ public double tokensToDollars(int tokens) { return isPracticeRound() ? 0.0d : tokens * getDollarsPerToken(); } + + public String getClientDebriefing() { + return getProperty("client-debriefing", getParentConfiguration().getClientDebriefing()); + } + + public String generateClientDebriefing(ClientData data) { + ST st = createStringTemplate(getClientDebriefing()); + populateClientEarnings(data); + st.add("clientData", data); + st.add("showUpPayment", NumberFormat.getCurrencyInstance().format(getParentConfiguration().getShowUpPayment())); + return st.render(); + } + + private void populateClientEarnings(ClientData data) { + populateClientEarnings(data, getParentConfiguration(), NumberFormat.getCurrencyInstance()); + } + + private void populateClientEarnings(ClientData data, ServerConfiguration serverConfiguration, NumberFormat formatter) { + data.setGrandTotalIncome(formatter.format(serverConfiguration.getTotalIncome(data))); + data.setCurrentIncome(formatter.format(tokensToDollars(data.getCurrentTokens()))); + data.setQuizEarnings(formatter.format(serverConfiguration.getQuizEarnings(data))); + data.setTrustGameEarnings(formatter.format(data.getTrustGameIncome())); + } public String generateFacilitatorDebriefing(ServerDataModel serverDataModel) { ST template = createStringTemplate(getFacilitatorDebriefing()); @@ -794,10 +817,7 @@ ServerConfiguration serverConfiguration = getParentConfiguration(); NumberFormat formatter = NumberFormat.getCurrencyInstance(); for (ClientData data: serverDataModel.getClientDataMap().values()) { - data.setGrandTotalIncome(formatter.format(serverConfiguration.getTotalIncome(data))); - data.setCurrentIncome(formatter.format(tokensToDollars(data.getCurrentTokens()))); - data.setQuizEarnings(formatter.format(serverConfiguration.getQuizEarnings(data))); - data.setTrustGameEarnings(formatter.format(data.getTrustGameIncome())); + populateClientEarnings(data, serverConfiguration, formatter); } template.add("clientDataList", serverDataModel.getClientDataMap().values()); return template.render(); diff -r 71e89c0d123b30b6a9deebf1f9a3d32124512945 -r c9d18da5330d7b493c22c8fb65994c5dcef9b014 src/main/java/edu/asu/commons/foraging/conf/ServerConfiguration.java --- a/src/main/java/edu/asu/commons/foraging/conf/ServerConfiguration.java +++ b/src/main/java/edu/asu/commons/foraging/conf/ServerConfiguration.java @@ -122,6 +122,10 @@ return assistant.getProperty("facilitator-debriefing"); } + public String getClientDebriefing() { + return assistant.getProperty("client-debriefing"); + } + public double getTotalIncome(ClientData data) { return data.getTotalIncome() + getShowUpPayment() + getQuizEarnings(data) + data.getTrustGameIncome(); } https://bitbucket.org/virtualcommons/foraging/changeset/d661cd58ca4d/ changeset: d661cd58ca4d user: alllee date: 2012-01-18 00:15:05 summary: fixes issue 29 - now checking if round is in progress before sending any in-round requests affected #: 1 file diff -r c9d18da5330d7b493c22c8fb65994c5dcef9b014 -r d661cd58ca4d38156bd4bd658e7292599592b328 src/main/java/edu/asu/commons/foraging/client/ForagingClient.java --- a/src/main/java/edu/asu/commons/foraging/client/ForagingClient.java +++ b/src/main/java/edu/asu/commons/foraging/client/ForagingClient.java @@ -40,6 +40,7 @@ import edu.asu.commons.foraging.event.ShowVotingInstructionsRequest; import edu.asu.commons.foraging.event.SurveyIdSubmissionRequest; import edu.asu.commons.foraging.event.SynchronizeClientEvent; +import edu.asu.commons.foraging.event.TrustGameResultsClientEvent; import edu.asu.commons.foraging.event.TrustGameSubmissionRequest; import edu.asu.commons.foraging.rules.ForagingRule; import edu.asu.commons.foraging.ui.GameWindow; @@ -225,6 +226,13 @@ getGameWindow().update(event.getTimeLeft()); } }); + addEventProcessor(new EventTypeProcessor<TrustGameResultsClientEvent>(TrustGameResultsClientEvent.class) { + @Override + public void handle(TrustGameResultsClientEvent event) { + getGameWindow2D().updateTrustGame(event); + } + + }); initialize2DEventProcessors(); // initialize3DEventProcessors(); messageQueue = new MessageQueue(); @@ -305,19 +313,21 @@ }); channel.add(this, new EventTypeProcessor<ClientMovementRequest>(ClientMovementRequest.class) { public void handle(ClientMovementRequest request) { - add(request); + if (isRoundInProgress()) { + add(request); + } } }); channel.add(this, new EventTypeProcessor<CollectTokenRequest>(CollectTokenRequest.class) { public void handle(CollectTokenRequest request) { - if (state == ClientState.RUNNING) { + if (isRoundInProgress()) { transmit(request); } } }); channel.add(this, new EventTypeProcessor<ResetTokenDistributionRequest>(ResetTokenDistributionRequest.class) { public void handle(ResetTokenDistributionRequest event) { - if (state == ClientState.RUNNING && dataModel.getRoundConfiguration().isPracticeRound()) { + if (isRoundInProgress() && dataModel.getRoundConfiguration().isPracticeRound()) { transmit(event); } } @@ -441,4 +451,9 @@ transmit(new RuleVoteRequest(getId(), selectedRule)); getGameWindow2D().ruleVoteSubmitted(); } + + + public boolean isRoundInProgress() { + return state == ClientState.RUNNING; + } } https://bitbucket.org/virtualcommons/foraging/changeset/630355d1b141/ changeset: 630355d1b141 user: alllee date: 2012-01-18 00:16:05 summary: updated full vision + in round chat configuration with client debriefing template affected #: 4 files diff -r d661cd58ca4d38156bd4bd658e7292599592b328 -r 630355d1b14195576d188c9bdbf5cde228a39df2 src/main/resources/configuration/asu-experiments/2011/t1/round4.xml --- a/src/main/resources/configuration/asu-experiments/2011/t1/round4.xml +++ b/src/main/resources/configuration/asu-experiments/2011/t1/round4.xml @@ -18,8 +18,6 @@ <entry key='in-round-chat-enabled'>true</entry><entry key="initial-distribution">.25</entry> -<entry key='resource-generator'>top-bottom-patchy</entry> - <entry key="instructions"><![CDATA[ <h3>Round {roundNumber} Instructions</h3> diff -r d661cd58ca4d38156bd4bd658e7292599592b328 -r 630355d1b14195576d188c9bdbf5cde228a39df2 src/main/resources/configuration/asu-experiments/2011/t1/round5.xml --- a/src/main/resources/configuration/asu-experiments/2011/t1/round5.xml +++ b/src/main/resources/configuration/asu-experiments/2011/t1/round5.xml @@ -13,6 +13,5 @@ <entry key='always-explicit'>true</entry><entry key='max-cell-occupancy'>1</entry><entry key="in-round-chat-enabled">true</entry> -<entry key='resource-generator'>top-bottom-patchy</entry></properties> diff -r d661cd58ca4d38156bd4bd658e7292599592b328 -r 630355d1b14195576d188c9bdbf5cde228a39df2 src/main/resources/configuration/asu-experiments/2011/t1/round6.xml --- a/src/main/resources/configuration/asu-experiments/2011/t1/round6.xml +++ b/src/main/resources/configuration/asu-experiments/2011/t1/round6.xml @@ -16,9 +16,6 @@ <entry key='max-cell-occupancy'>1</entry><entry key='trust-game'>true</entry> - -<entry key='resource-generator'>top-bottom-patchy</entry> - <entry key="last-round-debriefing"><![CDATA[ <h2>Survey</h2> diff -r d661cd58ca4d38156bd4bd658e7292599592b328 -r 630355d1b14195576d188c9bdbf5cde228a39df2 src/main/resources/configuration/asu-experiments/2011/t1/server.xml --- a/src/main/resources/configuration/asu-experiments/2011/t1/server.xml +++ b/src/main/resources/configuration/asu-experiments/2011/t1/server.xml @@ -202,4 +202,47 @@ </table> ]]></entry> +<entry key='client-debriefing'> +<![CDATA[ +<h1>{if (self.practiceRound)}Practice Round{else}Round {self.roundNumber}{endif} Results</h1> +<hr> +<ul> +<li>Tokens collected in this round: {clientData.currentTokens}</li> +<li>Income from tokens collected: {clientData.currentIncome}</li> +<li>Total tokens: {clientData.totalTokens}</li> +<li>Quiz earnings: {clientData.quizEarnings}</li> +<li>Show up payment: {showUpPayment}</li> +</ul> +{if (self.lastRound && ! clientData.trustGameLog.empty) } +<h2>Trust Game Earnings</h2> +<hr> +<ol> +{clientData.trustGameLog: {trustGameLog| +<li>Trust Game #{i}: {trustGameLog}</li> +}} +</ol> +{endif} +<h2>Total Income</h2> +<hr> +<p> +Your <b>total income across all rounds</b> is {clientData.grandTotalIncome}. +</p> +{if (self.lastRound)} +<h2>Exit Survey</h2> +<hr> +<p> +This was the last round, but not the end of the experiment. We will now determine your payments. While we are doing this, we request that you carefully fill out a brief survey. +</p> +<h2>Payments</h2> +<hr> +<p>NOTE: Your computer number is <b>{id}</b></p> +<p> +When the payments are ready we will call you one by one and pay you in private. Please wait until your computer number, <b>{id}</b>, is called before you come up and turn in your survey. Please answer the survey carefully and thank you for participating. +</p> +{endif} + + + +]]> +</entry></properties> https://bitbucket.org/virtualcommons/foraging/changeset/81fa4a6fbddf/ changeset: 81fa4a6fbddf user: alllee date: 2012-01-18 00:18:35 summary: fixes issue 30 - adding client side update for trust game results in last round affected #: 4 files diff -r 630355d1b14195576d188c9bdbf5cde228a39df2 -r 81fa4a6fbddf8c30702c6d36218fb56261a2685a src/main/java/edu/asu/commons/foraging/event/ClientPositionUpdateEvent.java --- a/src/main/java/edu/asu/commons/foraging/event/ClientPositionUpdateEvent.java +++ b/src/main/java/edu/asu/commons/foraging/event/ClientPositionUpdateEvent.java @@ -1,7 +1,6 @@ package edu.asu.commons.foraging.event; import java.awt.Point; -import java.util.List; import java.util.Map; import java.util.Queue; diff -r 630355d1b14195576d188c9bdbf5cde228a39df2 -r 81fa4a6fbddf8c30702c6d36218fb56261a2685a src/main/java/edu/asu/commons/foraging/model/ClientData.java --- a/src/main/java/edu/asu/commons/foraging/model/ClientData.java +++ b/src/main/java/edu/asu/commons/foraging/model/ClientData.java @@ -70,6 +70,7 @@ private ForagingRule votedRule; private ArrayList<String> trustGameLog = new ArrayList<String>(); + // String fields to be set and formatted for use in templates. private String grandTotalIncome; private String currentIncome; private String quizEarnings; diff -r 630355d1b14195576d188c9bdbf5cde228a39df2 -r 81fa4a6fbddf8c30702c6d36218fb56261a2685a src/main/java/edu/asu/commons/foraging/ui/ChatPanel.java --- a/src/main/java/edu/asu/commons/foraging/ui/ChatPanel.java +++ b/src/main/java/edu/asu/commons/foraging/ui/ChatPanel.java @@ -1,10 +1,7 @@ package edu.asu.commons.foraging.ui; import java.awt.BorderLayout; -import java.awt.Color; import java.awt.Dimension; -import java.awt.event.FocusEvent; -import java.awt.event.FocusListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.util.List; @@ -133,17 +130,17 @@ } } }); - chatField.addFocusListener(new FocusListener() { - @Override - public void focusGained(FocusEvent e) { - chatField.setBackground(Color.YELLOW); - } - @Override - public void focusLost(FocusEvent e) { - chatField.setBackground(Color.WHITE); - } - - }); +// chatField.addFocusListener(new FocusListener() { +// @Override +// public void focusGained(FocusEvent e) { +// chatField.setBackground(Color.YELLOW); +// } +// @Override +// public void focusLost(FocusEvent e) { +// chatField.setBackground(Color.WHITE); +// } +// +// }); JLabel headerLabel = new JLabel("Chat"); headerLabel.setFont(UserInterfaceUtils.DEFAULT_BOLD_FONT); add(headerLabel, BorderLayout.NORTH); diff -r 630355d1b14195576d188c9bdbf5cde228a39df2 -r 81fa4a6fbddf8c30702c6d36218fb56261a2685a src/main/java/edu/asu/commons/foraging/ui/GameWindow2D.java --- a/src/main/java/edu/asu/commons/foraging/ui/GameWindow2D.java +++ b/src/main/java/edu/asu/commons/foraging/ui/GameWindow2D.java @@ -51,6 +51,7 @@ import edu.asu.commons.foraging.event.QuizResponseEvent; import edu.asu.commons.foraging.event.RealTimeSanctionRequest; import edu.asu.commons.foraging.event.ResetTokenDistributionRequest; +import edu.asu.commons.foraging.event.TrustGameResultsClientEvent; import edu.asu.commons.foraging.model.ClientData; import edu.asu.commons.foraging.model.Direction; import edu.asu.commons.foraging.rules.ForagingRule; @@ -417,6 +418,9 @@ // FIXME: refactor this method if possible. @Override public void keyPressed(KeyEvent keyEvent) { + if (! client.isRoundInProgress()) { + return; + } int keyChar = (int) keyEvent.getKeyChar(); int keyCode = keyEvent.getKeyCode(); Event event = null; @@ -608,35 +612,10 @@ } return dataModel.getRoundConfiguration().getDollarsPerToken() * numTokens; } - - private void addDebriefingText(EndRoundEvent event) { + + public void showDebriefing(ClientData clientData) { instructionsBuilder.delete(0, instructionsBuilder.length()); - // FIXME: should be round-specific? We're not resetting correct quiz answers either. - int correctQuizAnswers = event.getClientData().getCorrectQuizAnswers(); - double quizReward = correctQuizAnswers * dataModel.getRoundConfiguration().getQuizCorrectAnswerReward(); - instructionsBuilder.append( - String.format("<h3>Your stats in this round:</h3>" + - "<ul>" + - "<li>Tokens collected: %d</li>" + - "<li>Income: $%3.2f</li>" + - "<li>Quiz questions answered correctly: %d (adds $%3.2f to your total)</li>" + - "</ul>", - event.getCurrentTokens(), getIncome(event.getCurrentTokens()), correctQuizAnswers, quizReward) - ); - double showUpPayment = dataModel.getRoundConfiguration().getParentConfiguration().getShowUpPayment(); - instructionsBuilder.append(String.format("Your <b>total income</b> so far (including a $%3.2f bonus for showing up) is : $%3.2f<hr>", - showUpPayment, dataModel.getTotalIncome() + showUpPayment + quizReward)); - for (String trustGameLog : event.getTrustGameLog()) { - instructionsBuilder.append(trustGameLog); - } - if (event.isLastRound()) { - // FIXME: show final round debriefing explicitly -// for (String trustGameLog : event.getTrustGameLog()) { -// instructionsBuilder.append(trustGameLog); -// } - instructionsBuilder.append(client.getDataModel().getLastRoundDebriefing()); - timeLeftLabel.setText("The experiment is now over."); - } + instructionsBuilder.append(dataModel.getRoundConfiguration().generateClientDebriefing(clientData)); setInstructions(instructionsBuilder.toString()); } @@ -840,7 +819,7 @@ switchInstructionsPane(); } // generate debriefing text from data culled from the Event - addDebriefingText(event); + showDebriefing(event.getClientData()); } }; try { @@ -901,5 +880,9 @@ switchInstructionsPane(); } + public void updateTrustGame(TrustGameResultsClientEvent event) { + showDebriefing(event.getClientData()); + } + } Repository URL: https://bitbucket.org/virtualcommons/foraging/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. |