/** * 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. */ /* * Copyright (c) 2010 SUSE LLC */ package com.redhat.rhn.frontend.action.errata; import com.redhat.rhn.domain.errata.Bug; import com.redhat.rhn.domain.errata.Errata; 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.RhnValidationHelper; import com.redhat.rhn.frontend.struts.StrutsDelegate; import com.redhat.rhn.manager.errata.ErrataManager; import org.apache.struts.action.ActionErrors; 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.Arrays; import java.util.Date; import java.util.Iterator; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * CreateAction * @version $Rev$ */ public class CreateAction extends RhnAction { /** * {@inheritDoc} */ public ActionForward execute(ActionMapping mapping, ActionForm formIn, HttpServletRequest request, HttpServletResponse response) { DynaActionForm form = (DynaActionForm) formIn; RequestContext requestContext = new RequestContext(request); StrutsDelegate strutsDelegate = getStrutsDelegate(); //Validate the form to make sure everything was filled out correctly ActionErrors errors = RhnValidationHelper.validateDynaActionForm(this, form); String advisoryNameFromForm = form.getString("advisoryName"); //Make sure advisoryName is unique if (!ErrataManager.advisoryNameIsUnique(null, advisoryNameFromForm)) { errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("errata.edit.error.uniqueAdvisoryName")); } // Make sure advisoryName does not begin with RH if (advisoryNameFromForm.toUpperCase().startsWith("RH")) { errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("errata.edit.error.rhAdvisoryName")); } if (!errors.isEmpty()) { // We've got errors. Forward to failure mapping. addErrors(request, errors); return mapping.findForward("failure"); } //Create a new unpublished errata Errata e = ErrataManager.createNewErrata(); e.setSynopsis(form.getString("synopsis")); e.setAdvisoryName(form.getString("advisoryName")); e.setAdvisoryRel(new Long(form.getString("advisoryRelease"))); e.setAdvisoryType(form.getString("advisoryType")); e.setProduct(form.getString("product")); e.setErrataFrom(form.getString("errataFrom")); //Advisory = advisoryName-advisoryRelease e.setAdvisory(form.getString("advisoryName") + "-" + form.getString("advisoryRelease")); //create a bug and add it to the set Bug bug = createBug(form); if (bug != null) { e.addBug(bug); } e.setTopic(form.getString("topic")); e.setDescription(form.getString("description")); e.setSolution(form.getString("solution")); //add keywords... split on commas and add separately to list String keywordsField = form.getString("keywords"); if (keywordsField != null) { List keywords = Arrays.asList(keywordsField.split(",")); Iterator keywordItr = keywords.iterator(); while (keywordItr.hasNext()) { String keyword = (String) keywordItr.next(); keyword = keyword.trim(); if (keyword != null && keyword.length() > 0) { e.addKeyword(keyword); } } } e.setRefersTo(form.getString("refersTo")); e.setNotes(form.getString("notes")); //Set issueDate to now Date date = new Date(System.currentTimeMillis()); e.setIssueDate(date); e.setUpdateDate(date); //Set the org for the errata to the logged in user's org User user = requestContext.getCurrentUser(); e.setOrg(user.getOrg()); ErrataManager.storeErrata(e); ActionMessages msgs = new ActionMessages(); msgs.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("errata.created", e.getAdvisoryName(), e.getAdvisoryRel().toString())); saveMessages(request, msgs); return strutsDelegate.forwardParam(mapping.findForward("success"), "eid", e.getId().toString()); } /** * Helper method to create a new bug from a form * @param form the form containing the bug items * @return Returns a new bug. */ private Bug createBug(DynaActionForm form) { //if id and summary are not null, we can create a new bug, otherwise return null if (form.getString("buglistId").length() > 0 && form.getString("buglistSummary").length() > 0) { Long id = new Long(form.getString("buglistId")); String summary = form.getString("buglistSummary"); String url = form.getString("buglistUrl"); return ErrataManager.createNewUnpublishedBug(id, summary, url); } return null; } }