/*
* 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, version 2, as
* published by the Free Software Foundation, and/or the GNU Lesser
* General Public License, version 2.1, also as published by the Free
* Software Foundation.
*
* 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 and the GNU Lesser General Public License
* for more details.
*
* You should have received a copy of the GNU General Public License
* and the GNU Lesser General Public License along with this program;
* if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package org.rhq.core.domain.resource;
import java.io.Serializable;
import org.rhq.core.domain.configuration.Configuration;
/**
* Represents the changes that should be applied to the existing resource
* in order to upgrade it to conform to the new requirements set by the
* changed resource component.
* </p>
* Null values of the properties mean no change, non-null values represent
* the desired new values.
* </p>
* Configuration updates are limited to only changing values for existing
* properties. The Configuration must still reflect the types configuration
* definition. Also, updates must be judicious as config values can also
* be updated by users.
*
* @author Lukas Krejci
*/
public class ResourceUpgradeReport implements Serializable {
private static final long serialVersionUID = 3L;
private String newResourceKey;
private String newName;
// version changes are typically handled differently, but in certain cases may be done here.
private String newVersion;
private String newDescription;
// Plugin configuration changes must still conform to the configuration definition.
private Configuration newPluginConfiguration;
// Is resource config update useful? Wouldn't resource config change discovery handle this?
// private Configuration newResourceConfiguration;
// In some cases assume the plugin knows best, and let it force upgrade of what we call "generic" resource
// properties (name, description). If set to true by the plugin code the server will obey,
// regardless of the value of SystemSetting.ALLOW_RESOURCE_GENERIC_PROPERTIES_UPGRADE.
private boolean forceGenericPropertyUpgrade = false;
public ResourceUpgradeReport() {
}
public String getNewResourceKey() {
return newResourceKey;
}
public void setNewResourceKey(String newResourceKey) {
this.newResourceKey = newResourceKey;
}
public String getNewName() {
return newName;
}
public void setNewName(String newName) {
this.newName = newName;
}
public String getNewVersion() {
return newVersion;
}
public void setNewVersion(String newVersion) {
this.newVersion = newVersion;
}
//
// public Configuration getNewResourceConfiguration() {
// return newResourceConfiguration;
// }
//
// public void setNewResourceConfiguration(Configuration newResourceConfiguration) {
// this.newResourceConfiguration = newResourceConfiguration;
// }
public String getNewDescription() {
return newDescription;
}
public void setNewDescription(String newDescription) {
this.newDescription = newDescription;
}
public Configuration getNewPluginConfiguration() {
return newPluginConfiguration;
}
/**
* See class javadoc for restrictions.
*/
public void setNewPluginConfiguration(Configuration newPluginConfiguration) {
this.newPluginConfiguration = newPluginConfiguration;
}
public boolean isForceGenericPropertyUpgrade() {
return forceGenericPropertyUpgrade;
}
/**
* In some cases assume the plugin knows best. Set true (with care) to force upgrade of what we call "generic"
* resource properties (name, description). If set to true by the plugin code the server will obey,
* regardless of the value of SystemSetting.ALLOW_RESOURCE_GENERIC_PROPERTIES_UPGRADE, which is false by default
* in order to protect hand-edited resource names.
*
* @param forceGenericPropertyUpgrade
*/
public void setForceGenericPropertyUpgrade(boolean forceGenericPropertyUpgrade) {
this.forceGenericPropertyUpgrade = forceGenericPropertyUpgrade;
}
public boolean hasSomethingToUpgrade() {
return newResourceKey != null || newName != null || newVersion != null || newDescription != null
|| newPluginConfiguration != null;
}
@Override
public String toString() {
return "ResourceUpgradeReport [newResourceKey=" + newResourceKey + ", newName=" + newName + ", newVersion="
+ newVersion + ", newDescription=" + newDescription + ", newPluginConfiguration=" + newPluginConfiguration
+ ", forceGenericPropertyUpgrade=" + forceGenericPropertyUpgrade + "]";
}
}