/** * Copyright (c) 2014 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.ssm; import com.redhat.rhn.common.localization.LocalizationService; import com.redhat.rhn.common.validator.ValidatorResult; import com.redhat.rhn.domain.org.CustomDataKey; import com.redhat.rhn.domain.org.OrgFactory; import com.redhat.rhn.domain.user.User; import com.redhat.rhn.frontend.struts.RequestContext; import com.redhat.rhn.frontend.struts.RhnAction; import com.redhat.rhn.frontend.struts.RhnHelper; import com.redhat.rhn.frontend.struts.RhnValidationHelper; import com.redhat.rhn.manager.rhnset.RhnSetDecl; import com.redhat.rhn.manager.system.SystemManager; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.action.ActionMessage; import org.apache.struts.action.ActionMessages; import org.apache.struts.action.DynaActionForm; import java.util.HashMap; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * ListSystemsAction * @version $Rev$ */ public class CustomValueSetAction extends RhnAction { private final String CIKID_PARAM = "cikid"; private final String LABEL_PARAM = "label"; private final String DESC_PARAM = "description"; private final String VAL_PARAM = "value"; private final String REMOVE_BTN = "remove"; private final String SET_BTN = "set"; private static final String VALIDATION_XSD = "/com/redhat/rhn/frontend/action/" + "systems/sdc/validation/editCustomDataForm.xsd"; /** {@inheritDoc} */ public ActionForward execute(ActionMapping mapping, ActionForm formIn, HttpServletRequest request, HttpServletResponse response) { RequestContext context = new RequestContext(request); DynaActionForm form = (DynaActionForm)formIn; User user = context.getCurrentUser(); Long cikid = context.getRequiredParam(CIKID_PARAM); CustomDataKey key = OrgFactory.lookupKeyById(cikid); form.set(LABEL_PARAM, key.getLabel()); request.setAttribute(CIKID_PARAM, cikid); request.setAttribute(LABEL_PARAM, key.getLabel()); request.setAttribute(DESC_PARAM, key.getDescription()); if (context.isSubmitted()) { String setLabel = RhnSetDecl.SYSTEMS.getLabel(); ActionMessages msgs = new ActionMessages(); if (request.getParameter(REMOVE_BTN) != null) { int updated = SystemManager.bulkRemoveCustomValue(user, setLabel, cikid); msgs.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage( "message.bulkremovecustomdata", key.getLabel(), LocalizationService .getInstance().formatNumber(updated))); getStrutsDelegate().saveMessages(request, msgs); return mapping.findForward("updated"); } else if (request.getParameter(SET_BTN) != null) { ValidatorResult result = RhnValidationHelper.validate(this.getClass(), makeValidationMap(form), null, VALIDATION_XSD); if (!result.isEmpty()) { request.setAttribute(VAL_PARAM, form.getString(VAL_PARAM)); getStrutsDelegate().saveMessages(request, result); return mapping.findForward(RhnHelper.DEFAULT_FORWARD); } String value = form.getString(VAL_PARAM); SystemManager.bulkSetCustomValue(user, setLabel, key.getLabel(), value); msgs.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage( "message.bulksetcustomdata", key.getLabel())); getStrutsDelegate().saveMessages(request, msgs); return mapping.findForward("updated"); } } return mapping.findForward(RhnHelper.DEFAULT_FORWARD); } private Object makeValidationMap(DynaActionForm formIn) { Map<String, String> map = new HashMap<String, String>(); map.put(VAL_PARAM, formIn.getString(VAL_PARAM)); return map; } }