001    package org.maltparser.parser.history.kbest;
002    
003    /**
004    *
005    * @author Johan Hall
006    * @since 1.1
007    **/
008    public class ScoredCandidate extends Candidate {
009            /**
010             * The candidate score
011             */
012            protected float score;
013            
014            /**
015             * Constructs a candidate object
016             */
017            public ScoredCandidate() {
018                    super();
019            }
020            
021            /**
022             * Returns the score for this candidate if it is available, otherwise Double.NaN
023             * 
024             * @return the score for this candidate if it is available, otherwise Double.NaN
025             */
026            public float getScore() {
027                    return score;
028            }
029    
030            /**
031             * Sets the score for this candidate.
032             * 
033             * @param score a score
034             */
035            public void setScore(Float score) {
036                    this.score = score;
037            }
038            
039            /**
040             * Resets the candidate object
041             */
042            public void reset() {
043                    super.reset();
044                    this.score = Float.NaN;
045            }
046            
047            /* (non-Javadoc)
048             * @see java.lang.Object#equals(java.lang.Object)
049             */
050            public boolean equals(Object obj) {
051                    if (this == obj)
052                            return true;
053                    if (obj == null)
054                            return false;
055                    if (getClass() != obj.getClass())
056                            return false;
057                    ScoredCandidate item = (ScoredCandidate)obj;
058                    return actionCode == item.actionCode && score == item.score;
059            }
060            
061            public int hashCode() {
062                    return (31 * 7 + actionCode) * 31 + Float.floatToIntBits(score);
063            }
064            
065            /* (non-Javadoc)
066             * @see java.lang.Object#toString()
067             */
068            public String toString() {
069                    StringBuilder sb = new StringBuilder();
070                    sb.append(super.toString());
071                    sb.append('\t');
072                    sb.append(score);
073                    return sb.toString();
074            }
075    }