Subversion Repositories general

Rev

Rev 915 | Blame | Last modification | View Log | RSS feed

package ak.hostcaptain.core.action;

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

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.DynaActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMessages;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionError;

import ak.strutsx.RequestUtilsX;
import ak.strutsx.ErrorHandlerX;
import ak.backpath.BackPath;

import ak.hostcaptain.util.StringConverter;
import ak.hostcaptain.core.model.User;
import ak.hostcaptain.core.model.UserManager;
import ak.hostcaptain.core.model.InetDomain;
import ak.hostcaptain.core.model.InetDomainManager;

public final class InetDomainAction
        extends Action
        implements ErrorHandlerX
{
        public void handleErrors(ActionMapping mapping, ActionForm form,
                         HttpServletRequest request, HttpServletResponse response)
                throws Exception
        {
                if("submit".equals(mapping.getParameter())) {
                        User user = (User)request.getSession().getAttribute("user");
                        initUserList(request, user);
                }
        }

        public ActionForward execute(ActionMapping mapping, ActionForm form,
                        HttpServletRequest request, HttpServletResponse response)
                throws Exception
        {
                User user = (User)request.getSession().getAttribute("user");

                if("list".equals(mapping.getParameter())) {
                        List list = new ArrayList(InetDomainManager.getInstance().listInetDomains(user));
                        Collections.sort(list, InetDomainManager.NAME_COMPARATOR);
                        request.setAttribute("domains", list);
                        request.setAttribute("allowedToCreate",
                                new Boolean(InetDomainManager.getInstance().allowedToCreate(user)));

                        return mapping.findForward("default");
                }
                else if("edit".equals(mapping.getParameter())) {
                        DynaActionForm theForm  = (DynaActionForm)form;
                        Long           domainId = StringConverter.parseLong(theForm.get("id"));
                        DynaActionForm showForm = (DynaActionForm)RequestUtilsX.populateActionForm(
                                this, request, "ak.hostcaptain.core.form.InetDomainEditForm");

                        if(domainId == null) {
                                showForm.set("enabled", new Boolean(true));
                        }
                        else {
                                InetDomain domain = InetDomainManager.getInstance().get(user, domainId);
                showForm.set("name", domain.getName());
                if(domain.getOwner() != null)
                        showForm.set("owner", StringConverter.toString(domain.getOwner().getId()));
                                showForm.set("enabled", domain.getEnabled());
                                showForm.set("comment", domain.getComment());
                        }

                        initUserList(request, user);
                        return mapping.findForward("default");
                }
                else if("delete".equals(mapping.getParameter())) {
                        DynaActionForm theForm  = (DynaActionForm)form;
                        Long           domainId = StringConverter.parseLong(theForm.get("id"));
                        InetDomain     domain   = InetDomainManager.getInstance().get(user, domainId);

                        InetDomainManager.getInstance().delete(user, domain);
                        response.sendRedirect(BackPath.findBackPath(request).getBackwardUrl());
                        return null;
                }
                else if("submit".equals(mapping.getParameter())) {
                        DynaActionForm theForm  = (DynaActionForm)form;
                        Long           domainId = StringConverter.parseLong(theForm.get("id"));
                        InetDomain     domain;

                        if(domainId == null) {
                                domain = InetDomainManager.getInstance().create(user);
                        }
                        else {
                                domain = InetDomainManager.getInstance().get(user, domainId);
                        }

            domain.setName((String)theForm.get("name"));
            domain.setOwner(UserManager.getInstance().get(user,
                StringConverter.parseLong(theForm.get("owner"))));

                        domain.setEnabled((Boolean)theForm.get("enabled"));
                        domain.setComment((String)theForm.get("comment"));

                        InetDomainManager.getInstance().save(user, domain);
                        response.sendRedirect(BackPath.findBackPath(request).getBackwardUrl());
                        return null;
                }
                else {
                        throw new Exception("unknown mapping parameter");
                }
        }

        private void initUserList(HttpServletRequest request, User user)
                throws Exception
        {
                List list = new ArrayList(UserManager.getInstance().listUsers(user));
                Collections.sort(list, UserManager.LOGIN_COMPARATOR);
                request.setAttribute("users", list);
        }
}