wsdor/src/main/java/cz/xelfi/quoridor/webidor/CommentedMove.java
author Jaroslav Tulach <jaroslav.tulach@apidesign.org>
Sat, 11 Sep 2010 17:04:51 +0200
changeset 256 1758a7727278
parent 115 webidor/src/main/java/cz/xelfi/quoridor/webidor/CommentedMove.java@6a80463a74c0
child 266 15fcdfc4cd4a
permissions -rw-r--r--
Splitting classes representing data types on the server into own module
jaroslav@115
     1
package cz.xelfi.quoridor.webidor;
jaroslav@115
     2
jaroslav@115
     3
import cz.xelfi.quoridor.IllegalPositionException;
jaroslav@115
     4
import cz.xelfi.quoridor.Move;
jaroslav@115
     5
import java.util.ArrayList;
jaroslav@115
     6
import java.util.List;
jaroslav@115
     7
import javax.xml.bind.annotation.XmlAttribute;
jaroslav@115
     8
import javax.xml.bind.annotation.XmlElement;
jaroslav@115
     9
jaroslav@115
    10
public final class CommentedMove {
jaroslav@115
    11
    Move move;
jaroslav@115
    12
    int index;
jaroslav@115
    13
    List<Note> comments;
jaroslav@115
    14
jaroslav@115
    15
    private CommentedMove() {
jaroslav@115
    16
        super();
jaroslav@115
    17
    }
jaroslav@115
    18
jaroslav@115
    19
    CommentedMove(Move move, int index) {
jaroslav@115
    20
        super();
jaroslav@115
    21
        this.move = move;
jaroslav@115
    22
        this.index = index;
jaroslav@115
    23
    }
jaroslav@115
    24
jaroslav@115
    25
    public Move getMove() {
jaroslav@115
    26
        return move;
jaroslav@115
    27
    }
jaroslav@115
    28
jaroslav@115
    29
    @XmlAttribute(name="move")
jaroslav@115
    30
    String getMoveText() {
jaroslav@115
    31
        return move.toString();
jaroslav@115
    32
    }
jaroslav@115
    33
jaroslav@115
    34
    void setMoveText(String m) throws IllegalPositionException {
jaroslav@115
    35
        move = Move.valueOf(m);
jaroslav@115
    36
    }
jaroslav@115
    37
    
jaroslav@115
    38
    @XmlAttribute
jaroslav@115
    39
    int getIndex() {
jaroslav@115
    40
        return index;
jaroslav@115
    41
    }
jaroslav@115
    42
jaroslav@115
    43
    void setIndex(int i) {
jaroslav@115
    44
        index = i;
jaroslav@115
    45
    }
jaroslav@115
    46
jaroslav@115
    47
    void addNote(Note n) {
jaroslav@115
    48
        if (comments == null) {
jaroslav@115
    49
            comments = new ArrayList<Note>();
jaroslav@115
    50
        }
jaroslav@115
    51
        comments.add(n);
jaroslav@115
    52
    }
jaroslav@115
    53
jaroslav@115
    54
    @XmlElement(name="comment", required=false)
jaroslav@115
    55
    public final List<Note> getComments() {
jaroslav@115
    56
        return comments;
jaroslav@115
    57
    }
jaroslav@115
    58
jaroslav@115
    59
    final void setComments(List<Note> l) {
jaroslav@115
    60
        this.comments = l;
jaroslav@115
    61
    }
jaroslav@115
    62
jaroslav@115
    63
    @Override
jaroslav@115
    64
    public String toString() {
jaroslav@115
    65
        StringBuilder sb = new StringBuilder();
jaroslav@115
    66
        sb.append("Move[").append(move).append("@").append(index);
jaroslav@115
    67
        if (comments != null) {
jaroslav@115
    68
            sb.append(", ");
jaroslav@115
    69
            sb.append(comments);
jaroslav@115
    70
        }
jaroslav@115
    71
        sb.append("]");
jaroslav@115
    72
        return sb.toString();
jaroslav@115
    73
    }
jaroslav@115
    74
jaroslav@115
    75
    @Override
jaroslav@115
    76
    public boolean equals(Object obj) {
jaroslav@115
    77
        if (obj == null) {
jaroslav@115
    78
            return false;
jaroslav@115
    79
        }
jaroslav@115
    80
        if (getClass() != obj.getClass()) {
jaroslav@115
    81
            return false;
jaroslav@115
    82
        }
jaroslav@115
    83
        final CommentedMove other = (CommentedMove) obj;
jaroslav@115
    84
        if (this.move != other.move && (this.move == null || !this.move.equals(other.move))) {
jaroslav@115
    85
            return false;
jaroslav@115
    86
        }
jaroslav@115
    87
        if (this.index != other.index) {
jaroslav@115
    88
            return false;
jaroslav@115
    89
        }
jaroslav@115
    90
        if (this.comments != other.comments && (this.comments == null || !this.comments.equals(other.comments))) {
jaroslav@115
    91
            return false;
jaroslav@115
    92
        }
jaroslav@115
    93
        return true;
jaroslav@115
    94
    }
jaroslav@115
    95
jaroslav@115
    96
    @Override
jaroslav@115
    97
    public int hashCode() {
jaroslav@115
    98
        int hash = 5;
jaroslav@115
    99
        hash = 43 * hash + (this.move != null ? this.move.hashCode() : 0);
jaroslav@115
   100
        hash = 43 * hash + this.index;
jaroslav@115
   101
        hash = 43 * hash + (this.comments != null ? this.comments.hashCode() : 0);
jaroslav@115
   102
        return hash;
jaroslav@115
   103
    }
jaroslav@115
   104
}