Ignore:
Timestamp:
01/30/20 16:52:38 (5 years ago)
Author:
bart
Message:

Tournament overview table, few bug fixes

Location:
protocol/src/main/java/geniusweb/protocol
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • protocol/src/main/java/geniusweb/protocol/session/SessionState.java

    r1 r11  
    1010import geniusweb.protocol.NegoState;
    1111import geniusweb.protocol.session.saop.SAOPState;
     12import geniusweb.protocol.session.shaop.SHAOPState;
    1213
    1314/**
     
    3334 * the protocol. As uaual, mark non-serializable fields as transient.
    3435 */
    35 @JsonSubTypes({ @JsonSubTypes.Type(value = SAOPState.class) })
     36@JsonSubTypes({ @JsonSubTypes.Type(value = SAOPState.class),
     37                @JsonSubTypes.Type(value = SHAOPState.class) })
    3638
    3739public interface SessionState extends NegoState {
  • protocol/src/main/java/geniusweb/protocol/session/shaop/BareSHAOPState.java

    r10 r11  
    3232        protected final ProtocolException error;
    3333
    34         protected final int actorNr;
     34        protected final int teamNr;
    3535
    3636        protected final Map<PartyId, Integer> partyNumbers;
     
    4343         *                   list
    4444         * @param conns      the currently existing connections. Can be empty/null.
    45          *                   Each connection represents another party. Normally
    46          *                   there is exactly 1 connection for every party. The
    47          *                   protocol should check this.
     45         *                   Each connection represents another party. Normally the
     46         *                   connections are in the order SHAOP1,COB1,SHAOP2,COB2,..
     47         *                   so 2 parties for each team. The protocol should check
     48         *                   this.
    4849         * @param progr      the {@link Progress} that governs this session. Can be
    4950         *                   null if session did not yet start.
     
    5455         *                   are bugs (not ProtocolExceptions) and should result in
    5556         *                   a throw.
    56          * @param actorNr    the actor that has the turn, index {@link #connections}
     57         * @param teamNr     the teamnr (0,1,2..) that has the turn. 2* gives index
     58         *                   {@link #connections} and settings
    5759         * @param partyNrs   a map for each known PartyId to a number. The number is
    5860         *                   the index in both {@link SHAOPSettings#getTeams()} and
     
    6466        public BareSHAOPState(List<Action> actions,
    6567                        ProtocolToPartyConnections conns, Progress progr,
    66                         SHAOPSettings settings, ProtocolException e, int actorNr,
     68                        SHAOPSettings settings, ProtocolException e, int teamNr,
    6769                        Map<PartyId, Integer> partyNrs, Map<PartyId, Double> spent) {
    6870                if (conns == null) {
     
    9799                this.settings = settings;
    98100                this.error = e;
    99                 this.actorNr = actorNr;
     101                this.teamNr = teamNr;
    100102        }
    101103
     
    106108        /**
    107109         *
    108          * @return party ID of current actorNr
     110         * @return party ID of current team leader (SHAOP party)
    109111         */
    110         public PartyId getCurrentActor() {
    111                 return connections.get(actorNr).getParty();
     112        public PartyId getCurrentTeam() {
     113                return connections.get(2 * teamNr).getParty();
    112114        }
    113115
  • protocol/src/main/java/geniusweb/protocol/session/shaop/SHAOP.java

    r10 r11  
    313313                                        .send(new ActionDone(action));
    314314                } else {
    315                         if (!partyconn.getParty().equals(state.getCurrentActor()))
     315                        if (!partyconn.getParty().equals(state.getCurrentTeam()))
    316316                                throw new ProtocolException(
    317317                                                "Party acts without having the turn",
     
    331331         */
    332332        private synchronized void nextTurn() {
    333                 PartyId party = state.getCurrentActor();
     333                PartyId party = state.getCurrentTeam();
    334334                try {
    335335                        state.getConnections().get(party).send(new YourTurn());
  • protocol/src/main/java/geniusweb/protocol/session/shaop/SHAOPSettings.java

    r10 r11  
    6262
    6363        /**
    64          *
    65          * @param n an index number into the {@link #getTeams()} list.
    66          * @return true iff that participant is a SHAOP party.
    67          */
    68         public boolean isShaopParty(int n) {
    69                 return (n & 1) == 0;
    70         }
    71 
    72         /**
    7364         * @return the deadline for this negotiation
    7465         */
     
    8374         *         party.
    8475         */
     76        @Override
    8577        public List<PartyWithProfile> getAllParties() {
    8678                return participants.stream().map(team -> team.getAllParties())
  • protocol/src/main/java/geniusweb/protocol/session/shaop/SHAOPState.java

    r10 r11  
    4141                        @JsonProperty("settings") SHAOPSettings settings,
    4242                        @JsonProperty("error") ProtocolException e,
    43                         @JsonProperty("actorNr") int actorNr,
     43                        @JsonProperty("teamNr") int teamNr,
    4444                        @JsonProperty("partyNumbers") Map<PartyId, Integer> partytNumbers,
    4545                        @JsonProperty("totalSpent") Map<PartyId, Double> spent) {
    46                 super(actions, conns, progress, settings, e, actorNr, partytNumbers,
     46                super(actions, conns, progress, settings, e, teamNr, partytNumbers,
    4747                                spent);
    4848        }
     
    7373         */
    7474        public boolean isShaopParty(PartyId party) {
    75                 return settings.isShaopParty(partyNumbers.get(party));
     75                return (partyNumbers.get(party) & 1) == 0;
    7676        }
    7777
     
    7979         *
    8080         * @param party a Party Id
    81          * @return the PartyId of the party
     81         * @return the PartyId of the party (COB and SHAOP are partners)
    8282         */
    8383        public PartyId getPartner(PartyId party) {
     
    132132                newNumbers.put(connection.getParty(), connections.size());
    133133                return new SHAOPState(actions, newconns, progress, settings, null,
    134                                 actorNr, newNumbers, totalSpent);
     134                                teamNr, newNumbers, totalSpent);
    135135        }
    136136
     
    144144        public SHAOPState with(ProtocolException e) {
    145145                return new SHAOPState(actions, connections, progress, settings, e,
    146                                 actorNr, partyNumbers, totalSpent);
     146                                teamNr, partyNumbers, totalSpent);
    147147        }
    148148
     
    162162                }
    163163                return new SHAOPState(actions, connections, newprogress, settings,
    164                                 error, actorNr, partyNumbers, totalSpent);
     164                                error, teamNr, partyNumbers, totalSpent);
    165165        }
    166166
     
    259259                List<Action> newactions = new LinkedList<>(getActions());
    260260                newactions.add(action);
    261                 int newActor = actorNr;
     261                int newTeam = teamNr;
    262262                if (action instanceof ElicitComparison) {
    263263                        Object cost = getPartyProfile(partyid).getParty().getParameters()
     
    276276                } else {
    277277                        // shaop party does real action, move to next SHAOP party.
    278                         newActor = (actorNr + 2) % settings.getTeams().size();
     278                        newTeam = (teamNr + 1) % settings.getTeams().size();
    279279                        if (newprogress instanceof ProgressRounds) {
    280280                                newprogress = ((ProgressRounds) newprogress).advance();
     
    282282                }
    283283                return new SHAOPState(newactions, connections, newprogress, settings,
    284                                 null, newActor, partyNumbers, newSpent);
     284                                null, newTeam, partyNumbers, newSpent);
    285285
    286286        }
     
    298298                if (!isShaopParty(actor))
    299299                        throw new IllegalArgumentException(
    300                                         "Illegal action for COB party" + action);
     300                                        "Only SHAOP party can execute " + action);
    301301                // real action only allowed if party has the turn.
    302                 if (!actor.equals(connections.get(actorNr).getParty())) {
     302                if (!actor.equals(connections.get(2 * teamNr).getParty())) {
    303303                        throw new IllegalArgumentException("Party does not have the turn ");
    304304                }
  • protocol/src/main/java/geniusweb/protocol/tournament/allpermutations/AllPermutationsSettings.java

    r10 r11  
    6767public class AllPermutationsSettings implements TournamentSettings {
    6868
     69        public static final String COB_PARTY = "comparebids-1.2.0";
    6970        private final List<PartyWithParameters> parties;
    7071        private final List<ProfileRef> profiles;
     
    292293                        PartyWithParameters cobparty = new PartyWithParameters(new PartyRef(
    293294                                        partyuri.getScheme() + "://" + partyuri.getAuthority()
    294                                                         + partypath + "/comparebids-1.0.0"),
     295                                                        + partypath + "/" + COB_PARTY),
    295296                                        new Parameters());
    296297                        return new PartyWithProfile(cobparty, cobprof);
Note: See TracChangeset for help on using the changeset viewer.