com.redhat.rhn.frontend.action.errata.ErrataDetailsSetupAction.java Source code

Java tutorial

Introduction

Here is the source code for com.redhat.rhn.frontend.action.errata.ErrataDetailsSetupAction.java

Source

/**
 * Copyright (c) 2009--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.errata;

import com.redhat.rhn.common.db.datasource.DataResult;
import com.redhat.rhn.common.localization.LocalizationService;
import com.redhat.rhn.common.util.StringUtil;
import com.redhat.rhn.domain.errata.Errata;
import com.redhat.rhn.domain.errata.ErrataFactory;
import com.redhat.rhn.domain.errata.ErrataFile;
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.manager.errata.ErrataManager;

import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.IteratorUtils;
import org.apache.commons.collections.Transformer;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import java.util.List;

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

/**
 * DetailsSetupAction
 * @version $Rev$
 */
public class ErrataDetailsSetupAction extends RhnAction {
    /** {@inheritDoc} */
    public ActionForward execute(ActionMapping mapping, ActionForm formIn, HttpServletRequest request,
            HttpServletResponse response) {

        RequestContext requestContext = new RequestContext(request);

        Long eid = requestContext.getRequiredParam("eid");

        User user = requestContext.getCurrentUser();
        Errata errata = ErrataManager.lookupErrata(eid, user);
        String ovalFile = findOvalFile(errata.getId());
        DataResult channels = ErrataManager.affectedChannels(user, eid);
        DataResult fixed = ErrataManager.bugsFixed(eid);
        DataResult cve = ErrataManager.errataCVEs(eid);
        DataResult keywords = ErrataManager.keywords(eid);

        //create the display for keywords
        //example: "/var/tmp, current, directory, expect"
        String keywordsDisplay = null;
        if (keywords != null) {
            keywordsDisplay = StringUtil.join(LocalizationService.getInstance().getMessage("list delimiter"),
                    IteratorUtils.getIterator(CollectionUtils.collect(keywords, new Transformer() {
                        public Object transform(Object o) {
                            return o.toString();
                        }
                    })));
        }

        request.setAttribute("errata", errata);
        request.setAttribute("issued", LocalizationService.getInstance().formatShortDate(errata.getIssueDate()));
        request.setAttribute("updated", LocalizationService.getInstance().formatShortDate(errata.getUpdateDate()));
        request.setAttribute("topic", StringUtil.htmlifyText(errata.getTopic()));
        request.setAttribute("description", StringUtil.htmlifyText(errata.getDescription()));
        request.setAttribute("solution", StringUtil.htmlifyText(errata.getSolution()));
        request.setAttribute("notes", StringUtil.htmlifyText(errata.getNotes()));
        request.setAttribute("references", StringUtil.htmlifyText(errata.getRefersTo()));
        request.setAttribute("channels", channels);
        request.setAttribute("fixed", fixed);
        request.setAttribute("cve", cve);
        request.setAttribute("keywords", keywordsDisplay);
        request.setAttribute("ovalFile", ovalFile);
        request.setAttribute("errataFrom", errata.getErrataFrom());

        return getStrutsDelegate().forwardParams(mapping.findForward(RhnHelper.DEFAULT_FORWARD),
                request.getParameterMap());
    }

    private String findOvalFile(Long errataId) {
        String retval = null;
        List files = ErrataFactory.lookupErrataFilesByErrataAndFileType(errataId, "oval");
        if (files == null || files.size() == 0) {
            return null;
        }
        ErrataFile ef = (ErrataFile) files.get(0);
        StringBuilder buf = new StringBuilder();
        buf.append("<a href=\"/rhn/oval?errata=").append(errataId).append("\">");
        String name = ef.getErrata().getAdvisoryName().toLowerCase();
        name = name.replaceAll(":", "");
        buf.append("com.redhat.").append(name).append(".xml");
        buf.append("</a>");
        retval = buf.toString();
        return retval;
    }
}