DS-Lab / src / main / java / dslab / routing / Address.java
Address.java
Raw
package dslab.routing;

import java.util.Objects;

/**
 * Represents a mail address, i.e. zaphod@univer.ze
 */
public class Address{

    private final String user;
    private final Domain domain;

    public Address(String user, Domain domain) {
        this.user = user;
        this.domain = domain;
    }

    public Address(String address) {
        address = address.strip();
        var parts = address.split("@");
        this.user = parts[0];
        this.domain = new Domain(parts[1]);
    }

    //copy constructor
    public Address(Address address) {
        this.user = address.getUsername();
        this.domain = address.getDomain();
    }

    public String getUsername() {
        return user;
    }

    public Domain getDomain() {
        return domain;
    }

    @Override
    public String toString() {
        return user + "@" + domain;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Address address = (Address) o;
        return user.equals(address.user) && domain.equals(address.domain);
    }

    @Override
    public int hashCode() {
        return Objects.hash(user, domain);
    }

}