DS-Lab / src / main / java / dslab / rmi / stub / dmtp / AddressValidationResult.java
AddressValidationResult.java
Raw
package dslab.rmi.stub.dmtp;

import dslab.routing.Address;

import java.util.ArrayList;
import java.util.List;

import static dslab.util.Utils.listElements;

public class AddressValidationResult {

    private final List<Address> valid;
    private final List<Address> invalid;
    private final List<Address> ignored;


    public AddressValidationResult(ArrayList<Address> valid, ArrayList<Address> invalid, ArrayList<Address> ignored) {
        this.valid = valid;
        this.invalid = invalid;
        this.ignored = ignored;
    }

    public List<Address> getValid() {
        return valid;
    }

    public boolean hasInvalid() {
        return !invalid.isEmpty();
    }

    public AddressValidationException asException() {
        return new AddressValidationException(invalid);
    }

    public List<Address> getValidAndIgnored() {
        var result = new ArrayList<Address>();
        result.addAll(ignored);
        result.addAll(valid);
        return result;
    }

    public static class AddressValidationException extends Exception {

        private final List<Address> invalidAddresses;

        public AddressValidationException(List<Address> invalidAddresses) {
            super("The following recipients were invalid: " + listElements(invalidAddresses));
            this.invalidAddresses = invalidAddresses;
        }

        public List<Address> getInvalidAddresses() {
            return invalidAddresses;
        }
    }
}