/* * 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.server.plugin.pc.alert; import org.rhq.core.domain.auth.Subject; import org.rhq.core.domain.configuration.Configuration; import org.rhq.core.domain.configuration.PropertySimple; import org.rhq.enterprise.server.configuration.ConfigurationManagerLocal; import org.rhq.enterprise.server.util.LookupUtil; /** * Abstract super class for custom alert sender backing beans * * @author Heiko W. Rupp */ public class CustomAlertSenderBackingBean { /** Configuration from the per alert definition parameters */ protected Configuration alertParameters; protected Configuration extraParameters; protected Subject webUser; protected String context; protected String contextId; protected String contextSubId; protected Integer alertNotificationId; public Configuration getAlertParameters() { return alertParameters; } public Configuration getExtraParameters() { return extraParameters; } public void setAlertParameters(Configuration alertParameters) { this.alertParameters = alertParameters; } public void setExtraParameters(Configuration extraParameters) { this.extraParameters = extraParameters; } public Subject getWebUser() { return webUser; } public void setWebUser(Subject webUser) { this.webUser = webUser; } public String getContext() { return context; } public void setContext(String context) { this.context = context; } public String getContextId() { return contextId; } public void setContextId(String contextId) { this.contextId = contextId; } public String getContextSubId() { return contextSubId; } public void setContextSubId(String contextSubId) { this.contextSubId = contextSubId; } public Integer getAlertNotificationId() { return alertNotificationId; } public void setAlertNotificationId(Integer alertNotificationId) { this.alertNotificationId = alertNotificationId; } public void loadView() { } public void saveView() { } /** * Persist the passed configuration object. This can be a new object or one * that already exists in the database. If the input is null, not persistence * happens and null is returned. * @param config configuration to persist or update * @return a merged copy of the configuration or null */ protected Configuration persistConfiguration(Configuration config) { if (config == null) return null; ConfigurationManagerLocal mgr = LookupUtil.getConfigurationManager(); config = mgr.mergeConfiguration(config); return config; } /** * Persist a single property of a given configuration. If the property does not yet exist, * it is created otherwise overwritten with the new value. * @param config configuration the property is on * @param propertyName name of the property to persist * @param value (new) value of the property to persist * @return the updated configuration */ protected Configuration persistProperty(Configuration config, String propertyName, Object value) { PropertySimple prop = config.getSimple(propertyName); if (prop == null) { prop = new PropertySimple(propertyName, value); config.put(prop); } else { prop.setValue(value); } Configuration ret = persistConfiguration(config); return ret; } /** * Remove one property from the passed configuration. Returns the updated configuration * @param config configuration the property is on * @param propertyName name of the property to remove * @return the updated configuration */ protected Configuration cleanProperty(Configuration config, String propertyName) { Configuration ret = config; PropertySimple prop = config.getSimple(propertyName); if (prop != null) { config.remove(propertyName); ret = persistConfiguration(config); } return ret; } }