Directory.java
package emissary.client.response;
import emissary.directory.DirectoryEntry;
import jakarta.xml.bind.annotation.XmlAccessType;
import jakarta.xml.bind.annotation.XmlAccessorType;
import jakarta.xml.bind.annotation.XmlElement;
import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;
import java.io.Serializable;
@XmlAccessorType(XmlAccessType.NONE)
public class Directory implements Comparable<Directory>, Serializable {
    private static final long serialVersionUID = 2428511052308449193L;
    private DirectoryEntry directoryEntry;
    @XmlElement(name = "entry")
    private String entry;
    @XmlElement(name = "dataId")
    private String dataId;
    @XmlElement(name = "cost")
    private int cost;
    @XmlElement(name = "quality")
    private int quality;
    @XmlElement(name = "expense")
    private int expense;
    public Directory() {}
    public Directory(DirectoryEntry directoryEntry) {
        this.directoryEntry = directoryEntry;
        setUpEntryInfo();
    }
    private void setUpEntryInfo() {
        entry = directoryEntry.getKey();
        dataId = directoryEntry.getDataId();
        cost = directoryEntry.getCost();
        quality = directoryEntry.getQuality();
        expense = directoryEntry.getExpense();
    }
    public DirectoryEntry getDirectoryEntry() {
        return directoryEntry;
    }
    public void setDirectoryEntry(DirectoryEntry directoryEntry) {
        this.directoryEntry = directoryEntry;
    }
    public String getEntry() {
        return entry;
    }
    public void setEntry(String entry) {
        this.entry = entry;
    }
    public String getDataId() {
        return dataId;
    }
    public void setDataId(String dataId) {
        this.dataId = dataId;
    }
    public int getCost() {
        return cost;
    }
    public void setCost(int cost) {
        this.cost = cost;
    }
    public int getQuality() {
        return quality;
    }
    public void setQuality(int quality) {
        this.quality = quality;
    }
    public int getExpense() {
        return expense;
    }
    public void setExpense(int expense) {
        this.expense = expense;
    }
    @Override
    public int compareTo(Directory o) {
        return getEntry().compareTo(o.getEntry());
    }
    @Override
    public boolean equals(Object o) {
        return EqualsBuilder.reflectionEquals(this, o);
    }
    @Override
    public int hashCode() {
        return HashCodeBuilder.reflectionHashCode(this);
    }
    @Override
    public String toString() {
        return getEntry();
    }
}