/*
* RHQ Management Platform
* Copyright (C) 2005-2008 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.definition.group;
import javax.faces.application.FacesMessage;
import javax.servlet.http.HttpSession;
import org.rhq.core.domain.resource.group.GroupDefinition;
import org.rhq.core.gui.util.FacesContextUtility;
import org.rhq.enterprise.gui.util.EnterpriseFacesContextUtility;
import org.rhq.enterprise.server.resource.group.definition.GroupDefinitionManagerLocal;
import org.rhq.enterprise.server.resource.group.definition.exception.GroupDefinitionException;
import org.rhq.enterprise.server.util.LookupUtil;
public class NewGroupDefinitionGeneralPropertiesUIBean {
public static final String MANAGED_BEAN_NAME = "NewGroupDefinitionGeneralPropertiesUIBean";
private static final String OUTCOME_SUCCESS = "success";
private static final String OUTCOME_FAILURE = "failure";
private static final String OUTCOME_CANCEL = "cancel";
private static final String TEMPORARY_CREATE_MARKER = "temporaryCreateGroupDef-Marker";
private static final String TEMPORARY_NAME_ATTRIBUTE = "temporaryGroupDefName";
private static final String TEMPORARY_DESCRIPTION_ATTRIBUTE = "temporaryGroupDefDescription";
private static final String TEMPORARY_RECURSIVE_ATTRIBUTE = "temporaryGroupDefRecursive";
private String name;
private String description;
private boolean recursive;
private int id;
private GroupDefinitionManagerLocal groupDefinitionManager = LookupUtil.getGroupDefinitionManager();
public NewGroupDefinitionGeneralPropertiesUIBean() {
HttpSession session = FacesContextUtility.getRequest().getSession();
String marker = (String) session.getAttribute(TEMPORARY_CREATE_MARKER);
String previousName = (String) session.getAttribute(TEMPORARY_NAME_ATTRIBUTE);
String previousDescription = (String) session.getAttribute(TEMPORARY_DESCRIPTION_ATTRIBUTE);
String previousRecursive = (String) session.getAttribute(TEMPORARY_RECURSIVE_ATTRIBUTE);
if (marker != null) {
this.name = previousName;
this.description = previousDescription;
this.recursive = previousRecursive.equals("TRUE");
}
session.removeAttribute(TEMPORARY_CREATE_MARKER);
session.removeAttribute(TEMPORARY_NAME_ATTRIBUTE);
session.removeAttribute(TEMPORARY_DESCRIPTION_ATTRIBUTE);
session.removeAttribute(TEMPORARY_RECURSIVE_ATTRIBUTE);
}
public String begin() {
return OUTCOME_SUCCESS;
}
public String create() {
HttpSession session = FacesContextUtility.getRequest().getSession();
try {
GroupDefinition groupDefinition = new GroupDefinition(this.name);
groupDefinition.setDescription(this.description);
groupDefinition.setRecursive(this.recursive);
session.setAttribute(TEMPORARY_CREATE_MARKER, "marker");
session.setAttribute(TEMPORARY_NAME_ATTRIBUTE, name);
session.setAttribute(TEMPORARY_DESCRIPTION_ATTRIBUTE, description);
session.setAttribute(TEMPORARY_RECURSIVE_ATTRIBUTE, (recursive ? "TRUE" : "FALSE"));
GroupDefinition newGroupdefinition = this.groupDefinitionManager.createGroupDefinition(
EnterpriseFacesContextUtility.getSubject(), groupDefinition);
id = newGroupdefinition.getId();
} catch (GroupDefinitionException gde) {
FacesContextUtility.addMessage(FacesMessage.SEVERITY_ERROR, "Problem creating group definition: "
+ gde.getMessage());
return OUTCOME_FAILURE;
} catch (Exception e) {
FacesContextUtility.addMessage(FacesMessage.SEVERITY_ERROR, "Error creating group definition: "
+ e.getMessage());
return OUTCOME_FAILURE;
}
session.removeAttribute(TEMPORARY_CREATE_MARKER);
FacesContextUtility.addMessage(FacesMessage.SEVERITY_INFO,
"Definition created successfully. Add conditions below.");
return OUTCOME_SUCCESS;
}
public String cancel() {
FacesContextUtility.addMessage(FacesMessage.SEVERITY_INFO, "Definition creation cancelled.");
return OUTCOME_CANCEL;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public String getDescription() {
return this.description;
}
public void setDescription(String description) {
this.description = description;
}
public boolean getRecursive() {
return recursive;
}
public void setRecursive(boolean recursive) {
this.recursive = recursive;
}
public int getId() {
return this.id;
}
}