/*
* RHQ Management Platform
* Copyright (C) 2005-2010 Red Hat, Inc.
* All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation version 2 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
package org.rhq.enterprise.gui.configuration.group;
import javax.faces.application.FacesMessage;
import org.rhq.core.gui.util.FacesContextUtility;
import org.rhq.enterprise.gui.util.EnterpriseFacesContextUtility;
import org.rhq.enterprise.server.authz.PermissionException;
import org.rhq.enterprise.server.configuration.ConfigurationUpdateStillInProgressException;
/**
* A POJO Seam component that handles loading and updating of Resource configurations across a compatible Group.
*
* @author Ian Springer
*/
//@Name("EditGroupResourceConfigurationUIBean")
//@Scope(ScopeType.CONVERSATION)
public class EditGroupResourceConfigurationUIBean extends AbstractGroupResourceConfigurationUIBean {
public static final String VIEW_ID = "/rhq/group/configuration/editCurrent.xhtml";
//@In(value = "org.jboss.seam.faces.redirect")
//private Redirect redirect;
//@Create
//@Begin
public void init() {
loadConfigurations();
// We can set this once here, since this.redirect is scoped to the same CONVERSATION as this managed bean instance.
//this.redirect.setParameter(ParamConstants.GROUP_ID_PARAM, getGroup().getId());
return;
}
/**
* Asynchronously persist the group member Configurations to the DB as well as push them out to the corresponding
* Agents. This gets called when user clicks the SAVE button.
*/
public void updateConfigurations() {
String viewId;
try {
// TODO: See if there's some way for the config renderer to handle calling applyGroupConfiguration(),
// so the managed bean doesn't have to worry about doing it.
getConfigurationSet().applyGroupConfiguration();
getConfigurationManager().scheduleGroupResourceConfigurationUpdate(
EnterpriseFacesContextUtility.getSubject(), getGroup().getId(), getResourceConfigurations());
FacesContextUtility
.addMessage(FacesMessage.SEVERITY_INFO, "Group Resource Configuration update scheduled.");
//Conversation.instance().endBeforeRedirect();
viewId = GroupResourceConfigurationHistoryUIBean.VIEW_ID;
} catch (ConfigurationUpdateStillInProgressException updateException) {
FacesContextUtility
.addMessage(FacesMessage.SEVERITY_WARN,
"Configuration update is currently in progress. Please consider reviewing the changes before submitting.");
viewId = VIEW_ID;
} catch (PermissionException e) {
FacesContextUtility.addMessage(FacesMessage.SEVERITY_ERROR, e.getLocalizedMessage());
viewId = ViewGroupResourceConfigurationUIBean.VIEW_ID;
} catch (Exception e) {
FacesContextUtility.addMessage(FacesMessage.SEVERITY_ERROR,
"Failed to schedule group Resource Configuration update - cause: " + e);
viewId = VIEW_ID;
}
//this.redirect.setViewId(getViewId(viewId));
//this.redirect.execute();
}
/**
* End the convo and redirect back to viewCurrent.xhtml. This gets called when user clicks the CANCEL button.
*/
//@End
public void cancel() {
FacesContextUtility.addMessage(FacesMessage.SEVERITY_INFO, "Edit canceled.");
//this.redirect.setViewId(getViewId(ViewGroupResourceConfigurationUIBean.VIEW_ID));
// this.redirect.execute();
return;
}
/**
* End the convo and reload the current page (editCurrent.xhtml). This gets called when user clicks the RESET button.
*/
// @End
public void reset() {
FacesContextUtility.addMessage(FacesMessage.SEVERITY_INFO, "All properties reset to original values.");
// this.redirect.setViewId(getViewId(VIEW_ID));
// this.redirect.execute();
return;
}
private String getViewId(String toViewId) {
String currentViewId = FacesContextUtility.getViewId();
int currentPlainIndex = currentViewId.indexOf("-plain.xhtml");
if (currentPlainIndex != -1) {
toViewId = toViewId.substring(0, toViewId.length() - 6) + "-plain.xhtml";
}
return toViewId;
}
}