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();
    }
}