/** * Copyright (c) 2009--2011 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.manager.kickstart; import com.redhat.rhn.domain.kickstart.KickstartCommand; import com.redhat.rhn.domain.kickstart.KickstartCommandName; import com.redhat.rhn.domain.kickstart.KickstartFactory; import com.redhat.rhn.domain.user.User; import com.redhat.rhn.frontend.dto.kickstart.KickstartOptionValue; import org.apache.log4j.Logger; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Set; /** * KickstartDetailsCommand * @version $Rev$ */ public class KickstartOptionsCommand extends BaseKickstartCommand { private static Logger log = Logger.getLogger(KickstartOptionsCommand.class); private List<KickstartCommandName> availableOptions; private List requiredOptions; /** * * @param ksid Kickstart Id * @param userIn Logged in User */ public KickstartOptionsCommand(Long ksid, User userIn) { super(ksid, userIn); this.availableOptions = KickstartFactory.lookupKickstartCommandNames(this.ksdata); this.requiredOptions = KickstartFactory.lookupKickstartRequiredOptions(); } /** * * @return List of advanced command options */ public List getAvailableOptions() { return this.availableOptions; } /** * * @return l List of advanced option commands to display to user */ public List<KickstartOptionValue> getDisplayOptions() { log.debug("getDisplayOptions()"); List<KickstartOptionValue> l = new LinkedList<KickstartOptionValue>(); Set<KickstartCommand> options = this.ksdata.getOptions(); for (KickstartCommandName cn : availableOptions) { log.debug("avail commandname: " + cn.getName()); String name = cn.getName(); boolean added = false; for (KickstartCommand c : options) { if (c.getCommandName().getName().equals(name)) { added = true; KickstartOptionValue v = new KickstartOptionValue(); v.setName(name); v.setHasArgs(cn.getArgs()); v.setRequired(cn.getRequired()); String args = c.getArguments(); log.debug(" args = " + args); // Default URL's are stored as a path, not a full URL. Because we store // the value directly back in the db we still must render just /path // here, so display a note informing the user of the situation. if (name.equals("url")) { v.setAdditionalNotesKey("kickstart.options.url.note"); } else if (name.equals("rootpw")) { v.setAdditionalNotesKey("kickstart.options.rootpw.note"); } v.setArg(args); v.setEnabled(Boolean.TRUE); l.add(v); } } // Add the default value since we don't have one specified. if (!added) { KickstartOptionValue v = new KickstartOptionValue(); v.setName(name); v.setHasArgs(cn.getArgs()); v.setRequired(cn.getRequired()); l.add(v); } } return l; } /** * * @param mapIn the request param map * @return new display list of values for ui */ public List refreshOptions(Map mapIn) { List l = new LinkedList(); for (Iterator itr = availableOptions.iterator(); itr.hasNext();) { KickstartCommandName cn = (KickstartCommandName) itr.next(); String name = cn.getName(); KickstartOptionValue v = new KickstartOptionValue(); v.setHasArgs(cn.getArgs()); v.setName(name); v.setRequired(cn.getRequired()); v.setEnabled(Boolean.valueOf(mapIn.containsKey(name))); String [] s = (String[])mapIn.get(name + "_txt"); if ((s != null) && (v.getEnabled().booleanValue())) { v.setArg(s[0]); } l.add(v); } return l; } /** * * @return List of required options */ public List getRequiredOptions() { return requiredOptions; } }