// 
// Decompiled by Procyon v0.6.0
// 

package org.jline.reader;

import java.util.Objects;

public class Candidate implements Comparable<Candidate>
{
    private final String value;
    private final String displ;
    private final String group;
    private final String descr;
    private final String suffix;
    private final String key;
    private final boolean complete;
    private final int sort;
    
    public Candidate(final String value) {
        this(value, value, null, null, null, null, true, 0);
    }
    
    public Candidate(final String value, final String displ, final String group, final String descr, final String suffix, final String key, final boolean complete, final int sort) {
        this.value = Objects.requireNonNull(value);
        this.displ = Objects.requireNonNull(displ);
        this.group = group;
        this.descr = descr;
        this.suffix = suffix;
        this.key = key;
        this.complete = complete;
        this.sort = sort;
    }
    
    public Candidate(final String value, final String displ, final String group, final String descr, final String suffix, final String key, final boolean complete) {
        this(value, displ, group, descr, suffix, key, complete, 0);
    }
    
    public String value() {
        return this.value;
    }
    
    public String displ() {
        return this.displ;
    }
    
    public String group() {
        return this.group;
    }
    
    public String descr() {
        return this.descr;
    }
    
    public String suffix() {
        return this.suffix;
    }
    
    public String key() {
        return this.key;
    }
    
    public boolean complete() {
        return this.complete;
    }
    
    public int sort() {
        return this.sort;
    }
    
    @Override
    public int compareTo(final Candidate o) {
        if (this.sort == o.sort()) {
            return this.value.compareTo(o.value);
        }
        return Integer.compare(this.sort, o.sort());
    }
    
    @Override
    public boolean equals(final Object o) {
        if (this == o) {
            return true;
        }
        if (o == null || this.getClass() != o.getClass()) {
            return false;
        }
        final Candidate candidate = (Candidate)o;
        return Objects.equals(this.value, candidate.value);
    }
    
    @Override
    public int hashCode() {
        return Objects.hashCode(this.value);
    }
    
    @Override
    public String toString() {
        return "Candidate{" + this.value + "}";
    }
}
