/* * 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, 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.content; import java.io.Serializable; import org.rhq.core.domain.configuration.Configuration; /** * Content source plugin representation of a package. Instances of this class are accessible to the content source to * describe the server's last known set of packages for the content source. * * <p>This is also the same object used in the plugin container to deal with details of a specific package.</p> * * @author Jason Dobies */ public class PackageDetails implements Serializable { // Constants -------------------------------------------- private static final long serialVersionUID = 1L; // Attributes -------------------------------------------- /** * Contains the data necessary to describe a specific version of a package. */ private PackageDetailsKey key; /** * Display version of the package. The format of this attribute will vary based on the package type. */ private String displayVersion; /** * Provides a second means for indicating a package's type. The possible values for this attribute will vary based * on package type. For instance, two packages of the same package type may be differentiated as a "bug fix" or a * "security update". Another example would be to indicate a grouping means, such as "System Environment" or * "Applications/Editors". */ private String classification; /** * Name of this package version that is suitable for display to the user in the UI. */ private String displayName; /** * Short free text description of this version of the package. In other words, a summary of the package. */ private String shortDescription; /** * Long free text description of this version of the package. */ private String longDescription; /** * Name of the file with the contents of this package. */ private String fileName; /** * Size of the package's file. */ private Long fileSize; /** * MD5 hash of the file. */ private String MD5; /** * SHA256 hash of the file. */ private String SHA256; /** * Timestamp on when the package's file was created. */ private Long fileCreatedDate; /** * Name of the license under which the package falls. */ private String licenseName; /** * Version of the package's license. */ private String licenseVersion; /** * The package location */ private String location; /** * XML Metadata */ private byte[] metadata; /** * Values to fulfill the package type specific extra properties. Values in this object will adhere to the * configuration definition in the associated package type * {@link org.rhq.core.domain.content.PackageType#packageExtraPropertiesDefinition}. */ private Configuration extraProperties; // Constructors -------------------------------------------- /** * Creates a new <code>PackageDetails</code> object that describes the package version identified in the specified * key. * * @param key identifies the package; cannot be <code>null</code> */ public PackageDetails(PackageDetailsKey key) { if (key == null) { throw new IllegalArgumentException("key cannot be null"); } this.key = key; } // Public -------------------------------------------- public PackageDetailsKey getKey() { return key; } public String getName() { return key.getName(); } public String getVersion() { return key.getVersion(); } public String getArchitectureName() { return key.getArchitectureName(); } public String getPackageTypeName() { return key.getPackageTypeName(); } public String getDisplayVersion() { return displayVersion; } public void setDisplayVersion(String displayVersion) { this.displayVersion = displayVersion; } public String getClassification() { return classification; } public void setClassification(String classification) { this.classification = classification; } public String getDisplayName() { return displayName; } public void setDisplayName(String displayName) { this.displayName = displayName; } public String getShortDescription() { return shortDescription; } public void setShortDescription(String shortDescription) { this.shortDescription = shortDescription; } public String getLongDescription() { return longDescription; } public void setLongDescription(String longDescription) { this.longDescription = longDescription; } public String getFileName() { return fileName; } public void setFileName(String fileName) { this.fileName = fileName; } public Long getFileSize() { return fileSize; } public void setFileSize(Long fileSize) { this.fileSize = fileSize; } public String getMD5() { return MD5; } public void setMD5(String MD5) { this.MD5 = MD5; } public String getSHA256() { return SHA256; } public void setSHA256(String sha) { this.SHA256 = sha; } public Long getFileCreatedDate() { return fileCreatedDate; } public void setFileCreatedDate(Long fileCreatedDate) { this.fileCreatedDate = fileCreatedDate; } public String getLicenseName() { return licenseName; } public void setLicenseName(String licenseName) { this.licenseName = licenseName; } public String getLicenseVersion() { return licenseVersion; } public void setLicenseVersion(String licenseVersion) { this.licenseVersion = licenseVersion; } public byte[] getMetadata() { return metadata; } public void setMetadata(byte[] metadata) { this.metadata = metadata; } public Configuration getExtraProperties() { return extraProperties; } public void setLocation(String location) { this.location = location; } public String getLocation() { return location; } public void setExtraProperties(Configuration properties) { this.extraProperties = properties; } @Override public boolean equals(Object o) { if (this == o) { return true; } if ((o == null) || (!(o instanceof PackageDetails))) { return false; } PackageDetails that = (PackageDetails) o; if (!key.equals(that.key)) { return false; } return true; } @Override public int hashCode() { return key.hashCode(); } @Override public String toString() { return "PackageDetails[Key=" + key + "]"; } }