/** * Copyright (c) 2009--2010 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.tree; import com.redhat.rhn.common.validator.ValidatorError; import com.redhat.rhn.domain.kickstart.KickstartData; import com.redhat.rhn.domain.kickstart.KickstartFactory; import com.redhat.rhn.domain.user.User; import com.redhat.rhn.manager.kickstart.KickstartDeleteCommand; import com.redhat.rhn.manager.kickstart.cobbler.CobblerCommand; import com.redhat.rhn.manager.kickstart.cobbler.CobblerDistroDeleteCommand; import java.util.List; /** * TreeDeleteOperation to delete a KickstartableTree * @version $Rev$ */ public class TreeDeleteOperation extends BaseTreeEditOperation { private Boolean deleteProfiles = Boolean.FALSE; /** * Default constructor: DONT USE * @param userIn to set */ public TreeDeleteOperation(User userIn) { super(userIn); } /** * Constructor for use when deleting an existing KickstartableTree * @param treeId to lookup * @param userIn who owns the tree */ public TreeDeleteOperation(Long treeId, User userIn) { super(userIn); this.tree = KickstartFactory. lookupKickstartTreeByIdAndOrg(treeId, userIn.getOrg()); } /** * Constructor for use when deleting an existing KickstartableTree * @param treeLabel to lookup * @param userIn who owns the tree */ public TreeDeleteOperation(String treeLabel, User userIn) { super(treeLabel, userIn); } /** * Set the delete profiles flag. If set, invoking store will delete * any profile that are currently associated with the tree. * * @param deleteProfilesIn flag indicating if profiles associated with * the tree should be deleted during store() */ public void setDeleteProfiles(Boolean deleteProfilesIn) { deleteProfiles = deleteProfilesIn; } /** * {@inheritDoc} * store() here actually does a remove operation. * It is done to reuse code from BaseTreeEditOperation and BaseTreeAction */ public ValidatorError store() { ValidatorError error = null; List<KickstartData> profiles = KickstartFactory.lookupKickstartDatasByTree( this.tree); if (profiles != null && profiles.size() > 0) { if (deleteProfiles) { for (KickstartData profile : profiles) { KickstartDeleteCommand cmd = new KickstartDeleteCommand( profile.getId(), this.user); cmd.store(); } } else { error = new ValidatorError("kickstart.tree.inuse"); } } if (error == null) { KickstartFactory.removeKickstartableTree(this.tree); CobblerDistroDeleteCommand delcmd = new CobblerDistroDeleteCommand(this.tree, this.user); delcmd.store(); } return error; } /** * {@inheritDoc} */ protected CobblerCommand getCobblerCommand() { return new CobblerDistroDeleteCommand(this.tree, this.user); } }