/** * Copyright (c) 2009--2013 Red Hat, Inc. * * This software is licensed to you under the GNU General Public License, * version 2 (GPLv2). There is NO WARRANTY for this software, express or * implied, including the implied warranties of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2 * along with this software; if not, see * http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt. * * Red Hat trademarks are not licensed under GPLv2. No permission is * granted to use or replicate Red Hat trademarks that are incorporated * in this software or its documentation. */ package com.redhat.rhn.frontend.action.kickstart; import com.redhat.rhn.common.validator.ValidatorError; import com.redhat.rhn.frontend.struts.RequestContext; import com.redhat.rhn.manager.kickstart.BaseKickstartCommand; import com.redhat.rhn.manager.kickstart.KickstartLocaleCommand; import org.apache.struts.action.DynaActionForm; import java.util.ArrayList; import java.util.Iterator; import java.util.Map; import javax.servlet.http.HttpServletRequest; /** * Handles display and update of Kickstart -> System Details -> Locale * * @version $Rev$ */ public class KickstartLocaleEditAction extends BaseKickstartEditAction { public static final String TIMEZONE_OPTIONS = "timezones"; public static final String TIMEZONE = "timezone"; public static final String USE_UTC = "use_utc"; public static final String UPDATE_METHOD = "kickstart.locale.jsp.updatekickstart"; /** * * {@inheritDoc} */ protected void setupFormValues(RequestContext ctx, DynaActionForm form, BaseKickstartCommand cmdIn) { KickstartLocaleCommand cmd = (KickstartLocaleCommand) cmdIn; ArrayList timezones = cmd.getValidTimezones(); ctx.getRequest().setAttribute(TIMEZONE_OPTIONS, timezones); form.set(TIMEZONE, cmd.getTimezone()); form.set(USE_UTC, cmd.getKickstartData().isUsingUtc()); } /** * * {@inheritDoc} */ protected ValidatorError processFormValues(HttpServletRequest request, DynaActionForm form, BaseKickstartCommand cmd) { ValidatorError retval = null; KickstartLocaleCommand localeCmd = (KickstartLocaleCommand) cmd; cmd = null; ArrayList validTimezones = localeCmd.getValidTimezones(); if (isTimezoneValid(validTimezones, form.getString(TIMEZONE)) == Boolean.TRUE) { localeCmd.setTimezone(form.getString(TIMEZONE)); } else { retval = new ValidatorError("kickstart.locale." + "validation.timezone.invalid"); } Boolean useUtc = (Boolean) form.get(USE_UTC); if (useUtc == null) { useUtc = Boolean.FALSE; } if (localeCmd.getKickstartData().isUsingUtc().booleanValue() && !useUtc.booleanValue()) { localeCmd.doNotUseUtc(); } else if (!localeCmd.getKickstartData().isUsingUtc().booleanValue() && useUtc.booleanValue()) { localeCmd.useUtc(); } return retval; } /** * * {@inheritDoc} */ protected String getSuccessKey() { return "kickstart.locale.success"; } /** * * {@inheritDoc} */ protected BaseKickstartCommand getCommand(RequestContext ctx) { return new KickstartLocaleCommand(ctx.getRequiredParam(RequestContext.KICKSTART_ID), ctx.getCurrentUser()); } /** * Is the timezone valid (ie, in the list of valid timezones) * * return Boolean valid, or not */ protected Boolean isTimezoneValid(ArrayList validTimezones, String timezone) { Iterator iter = validTimezones.iterator(); while (iter.hasNext()) { Map possible = (Map) iter.next(); if (timezone.equals(possible.get("value"))) { return Boolean.TRUE; } } return Boolean.FALSE; } }