Package mireka.filter.local.table

Source Code of mireka.filter.local.table.AliasMapper

package mireka.filter.local.table;

import java.text.ParseException;
import java.util.ArrayList;
import java.util.List;

import mireka.address.MailAddressFactory;
import mireka.address.Recipient;
import mireka.destination.AliasDestination;
import mireka.destination.Destination;

/**
* AliasMapper is a convenience class used in configuration files to create an
* alias. It maps a mail address to an {@link AliasDestination}.
*/
public class AliasMapper implements RecipientDestinationMapper {
    private final List<RecipientSpecification> aliases =
            new ArrayList<RecipientSpecification>();
    private AliasDestination destination;

    @Override
    public Destination lookup(Recipient recipient) {
        for (RecipientSpecification alias : aliases) {
            if (alias.isSatisfiedBy(recipient)) {
                return destination;
            }
        }
        return null;
    }

    /**
     * GETSET
     */
    public void addAlias(String mailbox) {
        RecipientSpecification recipientSpecification =
                new RecipientSpecificationFactory().create(mailbox);
        aliases.add(recipientSpecification);
    }

    /**
     * GETSET
     */
    public void setCanonical(String mailbox) {
        destination = new AliasDestination();
        try {
            destination.setRecipient(new MailAddressFactory()
                    .createRecipient(mailbox));
        } catch (ParseException e) {
            throw new RuntimeException(e);
        }
    }

    @Override
    public String toString() {
        return "AliasMapper [alias=" + aliases + ", destination="
                + destination.getRecipient() + "]";
    }
}
TOP

Related Classes of mireka.filter.local.table.AliasMapper

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.