/* * The contents of this file are subject to the terms of the Common Development and * Distribution License (the License). You may not use this file except in compliance with the * License. * * You can obtain a copy of the License at legal/CDDLv1.0.txt. See the License for the * specific language governing permission and limitations under the License. * * When distributing Covered Software, include this CDDL Header Notice in each file and include * the License file at legal/CDDLv1.0.txt. If applicable, add the following below the CDDL * Header, with the fields enclosed by brackets [] replaced by your own identifying * information: "Portions Copyright [year] [name of copyright owner]". * * Copyright 2008-2009 Sun Microsystems, Inc. * Portions Copyright 2014-2016 ForgeRock AS. */ package org.opends.guitools.controlpanel.ui; import static org.opends.messages.AdminToolMessages.*; import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; import java.util.LinkedHashSet; import java.util.SortedSet; import java.util.TreeSet; import org.opends.guitools.controlpanel.datamodel.BackendDescriptor; import org.opends.guitools.controlpanel.datamodel.BaseDNDescriptor; import org.opends.guitools.controlpanel.datamodel.ServerDescriptor; import org.opends.guitools.controlpanel.event.ConfigurationChangeEvent; import org.opends.guitools.controlpanel.task.DeleteBaseDNAndBackendTask; import org.opends.guitools.controlpanel.task.Task; import org.opends.guitools.controlpanel.util.Utilities; import org.forgerock.i18n.LocalizableMessage; import org.forgerock.i18n.LocalizableMessageBuilder; /** * The panel displayed when the user clicks on 'Delete Backend...' in the * browse entries dialog. */ public class DeleteBackendPanel extends DeleteBaseDNPanel { private static final long serialVersionUID = 8744925738292396658L; @Override public LocalizableMessage getTitle() { return INFO_CTRL_PANEL_DELETE_BACKEND_TITLE.get(); } /** * Returns the no backend found label. * @return the no backend found label. */ @Override protected LocalizableMessage getNoElementsFoundLabel() { return INFO_CTRL_PANEL_NO_BACKENDS_FOUND_LABEL.get(); } /** * Returns the list label. * @return the list label. */ @Override protected LocalizableMessage getListLabel() { return INFO_CTRL_PANEL_SELECT_BACKENDS_TO_DELETE.get(); } @Override public void configurationChanged(ConfigurationChangeEvent ev) { ServerDescriptor desc = ev.getNewDescriptor(); final SortedSet newElements = new TreeSet<>(); for (BackendDescriptor backend : desc.getBackends()) { if (!backend.isConfigBackend()) { newElements.add(backend.getBackendID()); } } updateList(newElements); updateErrorPaneAndOKButtonIfAuthRequired(desc, isLocal() ? INFO_CTRL_PANEL_AUTHENTICATION_REQUIRED_FOR_BACKEND_DELETE.get() : INFO_CTRL_PANEL_CANNOT_CONNECT_TO_REMOTE_DETAILS.get(desc.getHostname())); } @Override public void okClicked() { final LinkedHashSet errors = new LinkedHashSet<>(); ProgressDialog progressDialog = new ProgressDialog( Utilities.createFrame(), Utilities.getParentDialog(this), getTitle(), getInfo()); @SuppressWarnings("deprecation") Object[] backends = list.getSelectedValues(); ArrayList backendsToDelete = new ArrayList<>(); for (Object o : backends) { String id = (String)o; for (BackendDescriptor backend : getInfo().getServerDescriptor().getBackends()) { if (backend.getBackendID().equalsIgnoreCase(id)) { backendsToDelete.add(backend); break; } } } DeleteBaseDNAndBackendTask newTask = new DeleteBaseDNAndBackendTask( getInfo(), progressDialog, backendsToDelete, new HashSet()); for (Task task : getInfo().getTasks()) { task.canLaunch(newTask, errors); } if (errors.isEmpty()) { LocalizableMessage confirmationMessage = getConfirmationMessage(backendsToDelete); if (displayConfirmationDialog( INFO_CTRL_PANEL_CONFIRMATION_REQUIRED_SUMMARY.get(), confirmationMessage)) { launchOperation(newTask, INFO_CTRL_PANEL_DELETING_BACKENDS_SUMMARY.get(), INFO_CTRL_PANEL_DELETING_BACKENDS_COMPLETE.get(), INFO_CTRL_PANEL_DELETING_BACKENDS_SUCCESSFUL.get(), ERR_CTRL_PANEL_DELETING_BACKENDS_ERROR_SUMMARY.get(), ERR_CTRL_PANEL_DELETING_BACKENDS_ERROR_DETAILS.get(), null, progressDialog); progressDialog.setVisible(true); Utilities.getParentDialog(this).setVisible(false); } } if (!errors.isEmpty()) { displayErrorDialog(errors); } } private LocalizableMessage getConfirmationMessage( Collection backendsToDelete) { LocalizableMessageBuilder mb = new LocalizableMessageBuilder(); mb.append(INFO_CTRL_PANEL_CONFIRMATION_DELETE_BACKENDS_DETAILS.get()); for (BackendDescriptor backend : backendsToDelete) { mb.append("
- ").append(backend.getBackendID()); } mb.append("

"); mb.append(INFO_CTRL_PANEL_DO_YOU_WANT_TO_CONTINUE.get()); return mb.toMessage(); } }