/* * $Id$ * $URL$ */ package org.subethamail.web.action; import lombok.Getter; import lombok.Setter; import lombok.extern.java.Log; import org.hibernate.validator.constraints.Length; import org.subethamail.core.lists.i.SubscriberData; import org.subethamail.entity.i.Validator; import org.subethamail.web.Backend; import org.subethamail.web.action.auth.AuthAction; import org.subethamail.web.model.ErrorMapModel; /** * Saves changes to a subscriber. * * @author Jeff Schnitzer */ @Log public class SaveSubscription extends AuthAction { /** */ public static class Model extends ErrorMapModel { /** */ @Getter @Setter Long listId; @Getter @Setter Long personId; @Getter @Setter String name; /** starts as null, will be set if it was part of the save form UI */ @Getter @Setter String deliverTo; @Getter @Setter Long roleId; @Length(max=Validator.MAX_SUBSCRIPTION_NOTE) @Getter @Setter String note; /** Populated initially and when validation fails */ @Getter @Setter SubscriberData data; } public void initialize() { this.getCtx().setModel(new Model()); } /** */ public void execute() throws Exception { Model model = (Model)this.getCtx().getModel(); model.validate(); if (model.getErrors().isEmpty()) { // We know that parts were set when they are not null if (model.roleId != null) { Backend.instance().getListMgr().setSubscriptionRole(model.listId, model.personId, model.roleId); } if (model.deliverTo != null) { // If it was the empty value, we really want it to be null String actualDeliverTo = model.deliverTo.length() == 0 ? null : model.deliverTo; Backend.instance().getListMgr().setSubscriptionDelivery(model.listId, model.personId, actualDeliverTo); } if (model.note != null) { Backend.instance().getListMgr().setSubscriptionNote(model.listId, model.personId, model.note); } if (model.name != null) { Backend.instance().getAdmin().setPersonName(model.personId, model.name); } } else { model.data = Backend.instance().getListMgr().getSubscription(model.listId, model.personId); } } }