[virtualcommons-svn] SF.net SVN: virtualcommons:[313] irrigation/trunk/src/main/java/edu/asu/ commo
Status: Beta
Brought to you by:
alllee
From: <al...@us...> - 2009-10-21 07:35:07
|
Revision: 313 http://virtualcommons.svn.sourceforge.net/virtualcommons/?rev=313&view=rev Author: alllee Date: 2009-10-21 07:35:00 +0000 (Wed, 21 Oct 2009) Log Message: ----------- fixed debriefing table for arbitrary numbers of clients instead of hard coded 5 clients by transposing it. Modified Paths: -------------- irrigation/trunk/src/main/java/edu/asu/commons/irrigation/client/ClientDataModel.java irrigation/trunk/src/main/java/edu/asu/commons/irrigation/client/ExperimentGameWindow.java irrigation/trunk/src/main/java/edu/asu/commons/irrigation/client/IrrigationClient.java irrigation/trunk/src/main/java/edu/asu/commons/irrigation/client/IrrigationGamePanel.java irrigation/trunk/src/main/java/edu/asu/commons/irrigation/client/IrrigationGameWindow.java irrigation/trunk/src/main/java/edu/asu/commons/irrigation/client/MiddleScorePanel.java irrigation/trunk/src/main/java/edu/asu/commons/irrigation/client/ScoreBoxPanel.java irrigation/trunk/src/main/java/edu/asu/commons/irrigation/client/TokenInvestmentPieChartPanel.java irrigation/trunk/src/main/java/edu/asu/commons/irrigation/conf/RoundConfiguration.java irrigation/trunk/src/main/java/edu/asu/commons/irrigation/facilitator/FacilitatorWindow.java irrigation/trunk/src/main/java/edu/asu/commons/irrigation/server/ClientData.java irrigation/trunk/src/main/java/edu/asu/commons/irrigation/server/GroupDataModel.java irrigation/trunk/src/main/java/edu/asu/commons/irrigation/server/IrrigationServer.java Modified: irrigation/trunk/src/main/java/edu/asu/commons/irrigation/client/ClientDataModel.java =================================================================== --- irrigation/trunk/src/main/java/edu/asu/commons/irrigation/client/ClientDataModel.java 2009-10-21 05:59:23 UTC (rev 312) +++ irrigation/trunk/src/main/java/edu/asu/commons/irrigation/client/ClientDataModel.java 2009-10-21 07:35:00 UTC (rev 313) @@ -45,6 +45,11 @@ public ClientData getClientData() { return groupDataModel.getClientData( getId() ); } + + public String getPriorityString() { + return getClientData().getPriorityString(); + } + public Identifier getId() { return client.getId(); Modified: irrigation/trunk/src/main/java/edu/asu/commons/irrigation/client/ExperimentGameWindow.java =================================================================== --- irrigation/trunk/src/main/java/edu/asu/commons/irrigation/client/ExperimentGameWindow.java 2009-10-21 05:59:23 UTC (rev 312) +++ irrigation/trunk/src/main/java/edu/asu/commons/irrigation/client/ExperimentGameWindow.java 2009-10-21 07:35:00 UTC (rev 313) @@ -402,14 +402,14 @@ }; try { SwingUtilities.invokeAndWait(runnable); - } catch (InterruptedException e) { - // TODO Auto-generated catch block + } + catch (InterruptedException e) { e.printStackTrace(); - } catch (InvocationTargetException e) { - // TODO Auto-generated catch block + } + catch (InvocationTargetException e) { e.printStackTrace(); } - info("IrrigationGameWindow finished cleanup, ending round completed."); + info("ExperimentGameWindow finished cleanup, ending round completed."); } private void info(String message) { @@ -422,74 +422,85 @@ */ private void addDebriefingText(EndRoundEvent event) { instructionsBuilder.delete(0, instructionsBuilder.length()); - - Map<Identifier,ClientData> clientDataMap = event.getClientDataMap(); - - String positionString = "Your position is: " + event.getClientData().getPriorityAsString(); - ClientData[] allClientData = new ClientData[clientDataMap.size()]; - for(ClientData clientData : clientDataMap.values()) { - allClientData[clientData.getPriority()] = clientData; + instructionsBuilder.append("<b>You were in position " + clientDataModel.getPriorityString()); + instructionsBuilder.append( + "<table><thead><th>Position</th><th>Initial token endowment</th><th>Tokens invested</th><th>Tokens not invested</th>" + + "<th>Tokens earned from growing crops</th><th>Total tokens earned during this round</th>" + + "<th>Dollars earned during this round</th><th>Total dollars earned (including show-up bonus)</th></thead>" + + "<tbody>"); + double showUpBonus = clientDataModel.getServerConfiguration().getShowUpPayment(); + for(ClientData clientData : clientDataModel.getClientDataSortedByPriority()) { + instructionsBuilder.append( + String.format("<tr><td>%s</td><td>%d</td><td>%d</td><td>%d</td><td>%d</td><td>%d</td><td>%d</td><td>$%3.2f</td><td>$%3.2f</td></tr>", + clientData.getPriorityString(), + clientData.getMaximumTokenInvestment(), + clientData.getInvestedTokens(), + clientData.getUninvestedTokens(), + clientData.getAllTokensEarnedThisRound(), + clientData.getTokensEarnedFromWaterCollected(), + clientData.getAllTokensEarnedThisRound(), + clientData.getTotalDollarsEarnedThisRound(), + clientData.getTotalDollarsEarned() + showUpBonus + )); } - ClientData clientData = event.getClientData(); - RoundConfiguration roundConfiguration = clientData.getRoundConfiguration(); - double dollarsPerToken = roundConfiguration.getDollarsPerToken(); - // FIXME: wow - instructionsBuilder.append(String.format( - positionString + - "<table><thead><th></th><th></th><th>A</th><th></th><th>B</th><th></th><th>C</th><th></th><th>D</th><th></th><th>E</th></thead><tbody>"+ - "<tr><td>A Initial endowment</td><td></td><td>10</td><td></td><td>10</td><td></td><td>10</td><td></td><td>10</td><td></td><td>10</td></tr>"+ - "<tr><td>B Infrastructure investment</td><td></td><td>%d</td><td></td><td>%d</td><td></td><td>%d</td><td></td><td>%d</td><td></td><td>%d</td></tr>"+ - "<tr><td>C Kept endowment (A - B)</td><td></td><td>%d</td><td></td><td>%d</td><td></td><td>%d</td><td></td><td>%d</td><td></td><td>%d</td></tr>"+ - "<tr><td>D Return from growing crops</td><td></td><td>%d</td><td></td><td>%d</td><td></td><td>%d</td><td></td><td>%d</td><td></td><td>%d</td></tr>"+ - "<tr><td>E Total tokens earned in last round(D+C)</td><td></td><td>%d</td><td></td><td>%d</td><td></td><td>%d</td><td></td><td>%d</td><td></td><td>%d</td></tr>"+ - "<tr><td>F Total dollars earned in this round (E*0.1$)</td><td></td><td>%3.2f</td><td></td><td>%3.2f</td><td></td><td>%3.2f</td><td></td><td>%3.2f</td><td></td><td>%3.2f</td></tr>", - allClientData[0].getInvestedTokens(), - allClientData[1].getInvestedTokens(), - allClientData[2].getInvestedTokens(), - allClientData[3].getInvestedTokens(), - allClientData[4].getInvestedTokens(), - - allClientData[0].getUninvestedTokens(), - allClientData[1].getUninvestedTokens(), - allClientData[2].getUninvestedTokens(), - allClientData[3].getUninvestedTokens(), - allClientData[4].getUninvestedTokens(), + + ClientData clientData = clientDataModel.getClientData(); + RoundConfiguration configuration = clientDataModel.getRoundConfiguration(); - allClientData[0].getTotalTokensEarned() - allClientData[0].getUninvestedTokens(), - allClientData[1].getTotalTokensEarned() - allClientData[1].getUninvestedTokens(), - allClientData[2].getTotalTokensEarned() - allClientData[2].getUninvestedTokens(), - allClientData[3].getTotalTokensEarned() - allClientData[3].getUninvestedTokens(), - allClientData[4].getTotalTokensEarned() - allClientData[4].getUninvestedTokens(), - - allClientData[0].getTotalTokensEarned(), - allClientData[1].getTotalTokensEarned(), - allClientData[2].getTotalTokensEarned(), - allClientData[3].getTotalTokensEarned(), - allClientData[4].getTotalTokensEarned(), - - (float)dollarsPerToken*allClientData[0].getTotalTokensEarned(), - (float)dollarsPerToken*allClientData[1].getTotalTokensEarned(), - (float)dollarsPerToken*allClientData[2].getTotalTokensEarned(), - (float)dollarsPerToken*allClientData[3].getTotalTokensEarned(), - (float)dollarsPerToken*allClientData[4].getTotalTokensEarned() - - /* - event.getClientData().getContributedTokens(),otherClientData.getContributedTokens(), - 10 - event.getClientData().getContributedTokens(),10 - otherClientData.getContributedTokens(), - event.getClientData().getAward()-(10 - event.getClientData().getContributedTokens()), - otherClientData.getAward()-(10 - otherClientData.getContributedTokens()), - event.getClientData().getAward(),otherClientData.getAward(), - (float)event.getClientData().getRoundConfiguration().getDollarsPerToken()*event.getClientData().getAward(), - (float)otherClientData.getRoundConfiguration().getDollarsPerToken()*otherClientData.getAward()*/ - )); - instructionsBuilder.append("</tbody></table><hr>"); - instructionsBuilder.append(String.format("Summary: You received $1.00 at the beginning of the round and had " + - "$%3.2f at the end of the round. Your earnings in the experiments so far are $%3.2f plus the $5.00 " + - "showup fee, for a grand total of $%3.2f", - (float)dollarsPerToken*clientData.getTotalTokensEarned(), - (float)dollarsPerToken*clientData.getTotalTokens(), - (float)dollarsPerToken*clientData.getTotalTokens() + getServerConfiguration().getShowUpPayment() - )); + instructionsBuilder.append("</tbody></table><hr/>"); + instructionsBuilder.append(String.format("<h3>You received $%3.2f this past round. Your total earnings are $%3.2f, including the $%3.2f show up bonus.</h3>", + clientData.getTotalDollarsEarnedThisRound(), clientData.getTotalDollarsEarned()+showUpBonus, showUpBonus)); + // FIXME: wow. change this. +// instructionsBuilder.append(String.format( +// positionString + +// +// allClientData[0].getInvestedTokens(), +// allClientData[1].getInvestedTokens(), +// allClientData[2].getInvestedTokens(), +// allClientData[3].getInvestedTokens(), +// allClientData[4].getInvestedTokens(), +// +// allClientData[0].getUninvestedTokens(), +// allClientData[1].getUninvestedTokens(), +// allClientData[2].getUninvestedTokens(), +// allClientData[3].getUninvestedTokens(), +// allClientData[4].getUninvestedTokens(), +// +// allClientData[0].getTotalTokensEarned() - allClientData[0].getUninvestedTokens(), +// allClientData[1].getTotalTokensEarned() - allClientData[1].getUninvestedTokens(), +// allClientData[2].getTotalTokensEarned() - allClientData[2].getUninvestedTokens(), +// allClientData[3].getTotalTokensEarned() - allClientData[3].getUninvestedTokens(), +// allClientData[4].getTotalTokensEarned() - allClientData[4].getUninvestedTokens(), +// +// allClientData[0].getTotalTokensEarned(), +// allClientData[1].getTotalTokensEarned(), +// allClientData[2].getTotalTokensEarned(), +// allClientData[3].getTotalTokensEarned(), +// allClientData[4].getTotalTokensEarned(), +// +// (float)dollarsPerToken*allClientData[0].getTotalTokensEarned(), +// (float)dollarsPerToken*allClientData[1].getTotalTokensEarned(), +// (float)dollarsPerToken*allClientData[2].getTotalTokensEarned(), +// (float)dollarsPerToken*allClientData[3].getTotalTokensEarned(), +// (float)dollarsPerToken*allClientData[4].getTotalTokensEarned() +// +// /* +// event.getClientData().getContributedTokens(),otherClientData.getContributedTokens(), +// 10 - event.getClientData().getContributedTokens(),10 - otherClientData.getContributedTokens(), +// event.getClientData().getAward()-(10 - event.getClientData().getContributedTokens()), +// otherClientData.getAward()-(10 - otherClientData.getContributedTokens()), +// event.getClientData().getAward(),otherClientData.getAward(), +// (float)event.getClientData().getRoundConfiguration().getDollarsPerToken()*event.getClientData().getAward(), +// (float)otherClientData.getRoundConfiguration().getDollarsPerToken()*otherClientData.getAward()*/ +// )); +// instructionsBuilder.append("</tbody></table><hr>"); +// instructionsBuilder.append(String.format("Summary: You received $1.00 at the beginning of the round and had " + +// "$%3.2f at the end of the round. Your earnings in the experiments so far are $%3.2f plus the $5.00 " + +// "showup fee, for a grand total of $%3.2f", +// (float)dollarsPerToken*clientData.getAllTokensEarnedThisRound(), +// (float)dollarsPerToken*clientData.getTotalTokens(), +// (float)dollarsPerToken*clientData.getTotalTokens() + getServerConfiguration().getShowUpPayment() +// )); //append the added practice round instructions if(clientDataModel.getRoundConfiguration().isPracticeRound()) { instructionsBuilder.append(" However, this is a practice round and the earnings mentioned are only for illustrative purposes " + Modified: irrigation/trunk/src/main/java/edu/asu/commons/irrigation/client/IrrigationClient.java =================================================================== --- irrigation/trunk/src/main/java/edu/asu/commons/irrigation/client/IrrigationClient.java 2009-10-21 05:59:23 UTC (rev 312) +++ irrigation/trunk/src/main/java/edu/asu/commons/irrigation/client/IrrigationClient.java 2009-10-21 07:35:00 UTC (rev 313) @@ -181,6 +181,7 @@ }); channel.add(this, new EventTypeProcessor<EndRoundEvent>(EndRoundEvent.class) { public void handle(EndRoundEvent event) { + clientDataModel.setGroupDataModel(event.getClientData().getGroupDataModel()); experimentGameWindow.endRound(event); } }); Modified: irrigation/trunk/src/main/java/edu/asu/commons/irrigation/client/IrrigationGamePanel.java =================================================================== --- irrigation/trunk/src/main/java/edu/asu/commons/irrigation/client/IrrigationGamePanel.java 2009-10-21 05:59:23 UTC (rev 312) +++ irrigation/trunk/src/main/java/edu/asu/commons/irrigation/client/IrrigationGamePanel.java 2009-10-21 07:35:00 UTC (rev 313) @@ -177,12 +177,17 @@ private JTextField getWaterUsedTextField() { if (waterUsedTextField == null) { - waterUsedTextField = new JTextField(); - waterUsedTextField.setEditable(false); - waterUsedTextField.setBackground(Color.GRAY); + waterUsedTextField = createTextField(); } return waterUsedTextField; } + + private JTextField createTextField() { + JTextField textField = new JTextField(); + textField.setEditable(false); + textField.setBackground(Color.LIGHT_GRAY); + return textField; + } private JLabel getWaterUsedLabel() { if (waterUsedLabel == null) { @@ -193,8 +198,7 @@ private JTextField getTokensNotInvestedTextField() { if (tokensNotInvestedTextField == null) { - tokensNotInvestedTextField = new JTextField(); - tokensNotInvestedTextField.setEditable(false); + tokensNotInvestedTextField = createTextField(); } return tokensNotInvestedTextField; } @@ -207,8 +211,7 @@ private JTextField getTokensEarnedTextField() { if (tokensEarnedTextField == null) { - tokensEarnedTextField = new JTextField(); - tokensEarnedTextField.setEditable(false); + tokensEarnedTextField = createTextField(); } return tokensEarnedTextField; } @@ -221,8 +224,7 @@ private JTextField getTotalTokensEarnedTextField() { if (totalTokensEarnedTextField == null) { - totalTokensEarnedTextField = new JTextField(); - totalTokensEarnedTextField.setEditable(false); + totalTokensEarnedTextField = createTextField(); } return totalTokensEarnedTextField; @@ -404,8 +406,8 @@ ClientData clientData = clientDataModel.getClientData(); waterUsedTextField.setText("" + clientData.getWaterUsed()); tokensNotInvestedTextField.setText("" + clientData.getUninvestedTokens()); - tokensEarnedTextField.setText("" + clientData.waterToTokenFunction()); - totalTokensEarnedTextField.setText("" + clientData.getTotalTokensEarned()); + tokensEarnedTextField.setText("" + clientData.getTokensEarnedFromWaterCollected()); + totalTokensEarnedTextField.setText("" + clientData.getAllTokensEarnedThisRound()); getScoreBoxPanel().update(clientDataModel); // getMiddleWindowPanel().update(clientDataModel); @@ -434,22 +436,24 @@ public void endRound() { Runnable createGuiRunnable = new Runnable(){ public void run() { + gateSwitchButton.setText("Open gate"); if (canalPanel != null) { System.err.println("Removing canal panel"); upperPanel.remove(canalPanel); + canalPanel.endRound(); } System.err.println("ending round for canal panel"); - canalPanel.endRound(); + canalPanel = null; } }; open = false; - gateSwitchButton.setText("Open gate"); - try { SwingUtilities.invokeAndWait(createGuiRunnable); - } catch (InterruptedException e) { + } + catch (InterruptedException e) { e.printStackTrace(); - } catch (InvocationTargetException e) { + } + catch (InvocationTargetException e) { e.printStackTrace(); } Modified: irrigation/trunk/src/main/java/edu/asu/commons/irrigation/client/IrrigationGameWindow.java =================================================================== --- irrigation/trunk/src/main/java/edu/asu/commons/irrigation/client/IrrigationGameWindow.java 2009-10-21 05:59:23 UTC (rev 312) +++ irrigation/trunk/src/main/java/edu/asu/commons/irrigation/client/IrrigationGameWindow.java 2009-10-21 07:35:00 UTC (rev 313) @@ -544,7 +544,7 @@ if (moneyEarnedTextField == null) { moneyEarnedTextField = new JTextField(); moneyEarnedTextField.setText(new Integer(mainIrrigationWindow - .getClientDataModel().getClientData().getTotalTokensEarned()) + .getClientDataModel().getClientData().getAllTokensEarnedThisRound()) .toString()); moneyEarnedTextField.setBounds(new Rectangle(161, 17, 86, 21)); moneyEarnedTextField.setFont(new Font("Dialog", Font.PLAIN, 14)); Modified: irrigation/trunk/src/main/java/edu/asu/commons/irrigation/client/MiddleScorePanel.java =================================================================== --- irrigation/trunk/src/main/java/edu/asu/commons/irrigation/client/MiddleScorePanel.java 2009-10-21 05:59:23 UTC (rev 312) +++ irrigation/trunk/src/main/java/edu/asu/commons/irrigation/client/MiddleScorePanel.java 2009-10-21 07:35:00 UTC (rev 313) @@ -72,7 +72,7 @@ private JLabel getPositionText() { if (positionText == null){ - positionText = new JLabel(clientData.getPriorityAsString()); + positionText = new JLabel(clientData.getPriorityString()); positionText.setBounds(new Rectangle(5,50+32+10,30,20)); } return positionText; @@ -91,7 +91,7 @@ this.clientData = clientData; currentBandwidthText.setText("" + clientData.getAvailableFlowCapacity()); waterUsedTextField.setText("" + clientData.getWaterUsed()); - totalTokensEarnedTextField.setText("" + clientData.getTotalTokensEarned()); + totalTokensEarnedTextField.setText("" + clientData.getAllTokensEarnedThisRound()); if(clientData.isGateOpen() && clientData.getAvailableFlowCapacity() > 0) { // show that client is actively irrigating Modified: irrigation/trunk/src/main/java/edu/asu/commons/irrigation/client/ScoreBoxPanel.java =================================================================== --- irrigation/trunk/src/main/java/edu/asu/commons/irrigation/client/ScoreBoxPanel.java 2009-10-21 05:59:23 UTC (rev 312) +++ irrigation/trunk/src/main/java/edu/asu/commons/irrigation/client/ScoreBoxPanel.java 2009-10-21 07:35:00 UTC (rev 313) @@ -43,7 +43,7 @@ add(new JLabel("Position:")); List<ClientData> clientDataList = clientDataModel.getClientDataSortedByPriority(); for (ClientData clientData : clientDataList) { - add(new JLabel(clientData.getPriorityAsString())); + add(new JLabel(clientData.getPriorityString())); } // available water per second add(new JLabel("Available water per second:")); Modified: irrigation/trunk/src/main/java/edu/asu/commons/irrigation/client/TokenInvestmentPieChartPanel.java =================================================================== --- irrigation/trunk/src/main/java/edu/asu/commons/irrigation/client/TokenInvestmentPieChartPanel.java 2009-10-21 05:59:23 UTC (rev 312) +++ irrigation/trunk/src/main/java/edu/asu/commons/irrigation/client/TokenInvestmentPieChartPanel.java 2009-10-21 07:35:00 UTC (rev 313) @@ -55,7 +55,7 @@ labelBuilder.append("You"); } else { - labelBuilder.append(currentClientData.getPriorityAsString()); + labelBuilder.append(currentClientData.getPriorityString()); } labelBuilder.append(" invested ").append(currentClientData.getInvestedTokens()).append(" token(s)"); defaultPieDataset.setValue(labelBuilder.toString(), currentClientData.getInvestedTokens()); Modified: irrigation/trunk/src/main/java/edu/asu/commons/irrigation/conf/RoundConfiguration.java =================================================================== --- irrigation/trunk/src/main/java/edu/asu/commons/irrigation/conf/RoundConfiguration.java 2009-10-21 05:59:23 UTC (rev 312) +++ irrigation/trunk/src/main/java/edu/asu/commons/irrigation/conf/RoundConfiguration.java 2009-10-21 07:35:00 UTC (rev 313) @@ -47,8 +47,8 @@ return getIntProperty("max-canal-flow-capacity", 40); } - public int getMaximumInvestedTokens() { - return getIntProperty("max-invested-tokens", 10); + public int getMaximumTokenInvestment() { + return getIntProperty("max-token-investment", 10); } /** @@ -56,7 +56,7 @@ * @return */ public int getMaximumTotalInvestedTokens() { - return getMaximumInvestedTokens() * getClientsPerGroup(); + return getMaximumTokenInvestment() * getClientsPerGroup(); } public int getMaximumInfrastructureEfficiency() { @@ -79,6 +79,8 @@ /** * Returns the dollars/token exchange rate. $1 = 1, 50 cents = $.50, 1 penny per token = .01, etc. * + * FIXME: this should be a ServerConfiguration parameter unless we change it so + * the client keeps track of total dollars earned per round instead of total tokens earned per round. * * @return */ Modified: irrigation/trunk/src/main/java/edu/asu/commons/irrigation/facilitator/FacilitatorWindow.java =================================================================== --- irrigation/trunk/src/main/java/edu/asu/commons/irrigation/facilitator/FacilitatorWindow.java 2009-10-21 05:59:23 UTC (rev 312) +++ irrigation/trunk/src/main/java/edu/asu/commons/irrigation/facilitator/FacilitatorWindow.java 2009-10-21 07:35:00 UTC (rev 313) @@ -186,8 +186,8 @@ "<td align='center'>$%3.2f</td>" + "<td align='center'>$%3.2f</td></tr>", clientId.toString(), - data.getTotalTokensEarned(), - data.getTotalTokensEarned() * model.getRoundConfiguration().getDollarsPerToken(), + data.getAllTokensEarnedThisRound(), + data.getAllTokensEarnedThisRound() * model.getRoundConfiguration().getDollarsPerToken(), data.getTotalTokens() * model.getRoundConfiguration().getDollarsPerToken()+ facilitator.getConfiguration().getShowUpPayment())); } builder.append("</tbody></table><hr>"); Modified: irrigation/trunk/src/main/java/edu/asu/commons/irrigation/server/ClientData.java =================================================================== --- irrigation/trunk/src/main/java/edu/asu/commons/irrigation/server/ClientData.java 2009-10-21 05:59:23 UTC (rev 312) +++ irrigation/trunk/src/main/java/edu/asu/commons/irrigation/server/ClientData.java 2009-10-21 07:35:00 UTC (rev 313) @@ -27,7 +27,7 @@ private GroupDataModel groupDataModel; - private int waterUsed = 0; + private int waterCollected = 0; private int availableFlowCapacity; @@ -76,7 +76,7 @@ private final static String[] PRIORITY_STRINGS = { "A", "B", "C", "D", "E" }; - public String getPriorityAsString() { + public String getPriorityString() { // bounds check int priority = getPriority(); if (priority >= 0 && priority < PRIORITY_STRINGS.length) { @@ -125,7 +125,7 @@ } public int getUninvestedTokens() { - return roundConfiguration.getMaximumInvestedTokens() - investedTokens; + return roundConfiguration.getMaximumTokenInvestment() - investedTokens; } public GroupDataModel getGroupDataModel() { @@ -149,7 +149,7 @@ closeGate(); investedTokens = 0; //adding number of files to be downloaded = 0 per round - waterUsed = 0; + waterCollected = 0; } public void resetAllTokens() { @@ -182,17 +182,21 @@ setAvailableFlowCapacity(availableFlowCapacity); } - public void award() { - totalTokens += getTotalTokensEarned(); + public void addTokensEarnedThisRoundToTotal() { + totalTokens += getAllTokensEarnedThisRound(); } /** * Returns the current number of tokens given to this participant. * @return */ - public int getTotalTokensEarned(){ - return waterToTokenFunction() + getUninvestedTokens(); + public int getAllTokensEarnedThisRound(){ + return getTokensEarnedFromWaterCollected() + getUninvestedTokens(); } + + public double getTotalDollarsEarnedThisRound() { + return roundConfiguration.getDollarsPerToken() * getAllTokensEarnedThisRound(); + } /** * Reward function table correlating water usage to tokens earned. @@ -200,47 +204,47 @@ * @param value * @return */ - public int waterToTokenFunction() { - if (waterUsed < 150) { + public int getTokensEarnedFromWaterCollected() { + if (waterCollected < 150) { return 0; } - else if (waterUsed < 200) { + else if (waterCollected < 200) { return 1; } - else if (waterUsed < 250) { + else if (waterCollected < 250) { return 4; } - else if (waterUsed < 300) { + else if (waterCollected < 300) { return 10; } - else if (waterUsed < 350) { + else if (waterCollected < 350) { return 15; } - else if (waterUsed < 400) { + else if (waterCollected < 400) { return 18; } - else if (waterUsed < 500) { + else if (waterCollected < 500) { return 19; } - else if (waterUsed < 550) { + else if (waterCollected < 550) { return 20; } - else if (waterUsed < 650) { + else if (waterCollected < 650) { return 19; } - else if (waterUsed < 700) { + else if (waterCollected < 700) { return 18; } - else if (waterUsed < 750) { + else if (waterCollected < 750) { return 15; } - else if (waterUsed < 800) { + else if (waterCollected < 800) { return 10; } - else if (waterUsed < 850) { + else if (waterCollected < 850) { return 4; } - else if (waterUsed < 900) { + else if (waterCollected < 900) { return 1; } else { @@ -249,13 +253,21 @@ } public void collectWater() { - waterUsed += availableFlowCapacity; + waterCollected += availableFlowCapacity; } public int getWaterUsed(){ - return waterUsed; + return waterCollected; } + public int getMaximumTokenInvestment() { + return getRoundConfiguration().getMaximumTokenInvestment(); + } + + public double getTotalDollarsEarned() { + return roundConfiguration.getDollarsPerToken() * totalTokens; + } + } Modified: irrigation/trunk/src/main/java/edu/asu/commons/irrigation/server/GroupDataModel.java =================================================================== --- irrigation/trunk/src/main/java/edu/asu/commons/irrigation/server/GroupDataModel.java 2009-10-21 05:59:23 UTC (rev 312) +++ irrigation/trunk/src/main/java/edu/asu/commons/irrigation/server/GroupDataModel.java 2009-10-21 07:35:00 UTC (rev 313) @@ -63,7 +63,7 @@ throw new IllegalArgumentException( "no client state available for: " + id); } - return state.getTotalTokensEarned(); + return state.getAllTokensEarnedThisRound(); } public void addClient(ClientData clientData) { Modified: irrigation/trunk/src/main/java/edu/asu/commons/irrigation/server/IrrigationServer.java =================================================================== --- irrigation/trunk/src/main/java/edu/asu/commons/irrigation/server/IrrigationServer.java 2009-10-21 05:59:23 UTC (rev 312) +++ irrigation/trunk/src/main/java/edu/asu/commons/irrigation/server/IrrigationServer.java 2009-10-21 07:35:00 UTC (rev 313) @@ -401,7 +401,7 @@ //Send the end round event to all the clients synchronized (clients) { for (ClientData data : clients.values()) { - data.award(); + data.addTokensEarnedThisRoundToTotal(); transmit(new EndRoundEvent(data.getId(), data.getGroupDataModel(), getConfiguration().isLastRound())); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |