/*
* $Id$
* $URL$
*/
package org.subethamail.web.action;
import java.util.HashSet;
import java.util.Set;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import lombok.Getter;
import lombok.Setter;
import lombok.extern.java.Log;
import org.subethamail.common.MailUtils;
import org.subethamail.core.lists.i.MassSubscribeType;
import org.subethamail.web.Backend;
import org.subethamail.web.action.auth.AuthAction;
import org.subethamail.web.model.ErrorMapModel;
/**
* Subscribes many users at once.
*
* @author Jeff Schnitzer
*/
@Log
public class SubscribeMass extends AuthAction
{
/** */
public static class Model extends ErrorMapModel
{
/** */
@Getter @Setter Long listId;
@Getter @Setter String how = "";
@Getter @Setter String emails = "";
@Getter @Setter Set<String> addedEmails;
}
/** */
public void initialize()
{
this.getCtx().setModel(new Model());
}
/** */
public void execute() throws Exception
{
Model model = (Model)this.getCtx().getModel();
MassSubscribeType how = MassSubscribeType.valueOf(model.how);
try
{
InternetAddress[] addresses = MailUtils.parseMassSubscribe(model.emails);
Backend.instance().getListMgr().massSubscribe(model.listId, how, addresses);
model.addedEmails = new HashSet<String>(addresses.length);
for (InternetAddress address : addresses)
{
model.addedEmails.add(address.getAddress());
}
}
catch (AddressException ex)
{
model.setError("emails", ex.getMessage());
}
}
}