package org.ovirt.engine.core.common.businessentities; import java.util.Date; import java.util.List; import java.util.Objects; import org.ovirt.engine.core.common.utils.ToStringBuilder; /** * An Erratum (also referred to as Katello Erratum) is the wrapper of a software update to an operating system. * <p> * "Errata are updates between major releases. An Erratum is metadata about a group of [software] packages * that explains the importance of the package updates. Errata may be released individually on an as-needed * basis or aggregated as a minor release. There are three main types of errata: * <br><br> * Enhancement: the new packages contain one or more added features * Bugfix: the new packages contain one or more bug fixes * Security: the new packages fix one or more security vulnerabilities" * <p> * @see http://www.katello.org/docs//user_guide/errata/index.html */ public class Erratum implements IVdcQueryable, BusinessEntity<String> { private static final long serialVersionUID = 1297381071010863377L; private String id; private String title; private ErrataType type; private ErrataSeverity severity; private String summary; private String description; private String solution; private Date issued; private List<String> packages; public Erratum() { // default to unknown severity, bug setSeverity(ErrataSeverity.UNKNOWN); setType(ErrataType.BUGFIX); } @Override public String getId() { return id; } @Override public void setId(String id) { this.id = id; } @Override public Object getQueryableId() { return getId(); } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public ErrataType getType() { return type; } public void setType(ErrataType type) { this.type = type; } public ErrataSeverity getSeverity() { return severity; } public ErrataSeverity getSeverityOrDefault() { return severity == null ? ErrataSeverity.UNKNOWN : severity; } public void setSeverity(ErrataSeverity severity) { this.severity = severity; } public String getSummary() { return summary; } public void setSummary(String summary) { this.summary = summary; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public String getSolution() { return solution; } public void setSolution(String solution) { this.solution = solution; } public Date getIssued() { return issued; } public void setIssued(Date issued) { this.issued = issued; } public List<String> getPackages() { return packages; } public void setPackages(List<String> packages) { this.packages = packages; } @Override public int hashCode() { return Objects.hash( description, id, issued, packages, severity, solution, summary, title, type ); } @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (!(obj instanceof Erratum)) { return false; } Erratum other = (Erratum) obj; return Objects.equals(description, other.description) && Objects.equals(id, other.id) && Objects.equals(issued, other.issued) && Objects.equals(packages, other.packages) && severity == other.severity && Objects.equals(solution, other.solution) && Objects.equals(summary, other.summary) && Objects.equals(title, other.title) && type == other.type; } public enum ErrataType { BUGFIX("bugfix", "ORANGERED"), // $NON-NLS-1$ $NON-NLS-2$ SECURITY("security", "DARKORANGE"), //$NON-NLS-1$ $NON-NLS-2$ ENHANCEMENT("enhancement", "BLUE"); //$NON-NLS-1$ $NON-NLS-2$ private String description; private String color; private ErrataType(String description, String color) { this.description = description; this.color = color; } public static ErrataType byDescription(String description) { for (ErrataType t : values()) { if (t.description.equals(description)) { return t; } } return null; } public String getDescription() { return description; } public String getColor() { return color; } } public enum ErrataSeverity { CRITICAL("Critical"), //$NON-NLS-1$ IMPORTANT("Important"), //$NON-NLS-1$ MODERATE("Moderate"), //$NON-NLS-1$ UNKNOWN("Unknown"); //$NON-NLS-1$ private String description; private ErrataSeverity(String severity) { this.description = severity; } public static ErrataSeverity byDescription(String description) { for (ErrataSeverity s : values()) { if (s.description.equals(description)) { return s; } } return null; } public String getDescription() { return description; } } @Override public String toString() { ToStringBuilder builder = ToStringBuilder.forInstance(this); builder.append("id", id); //$NON-NLS-1$ builder.append("title", title); //$NON-NLS-1$ builder.append("type", type); //$NON-NLS-1$ builder.append("severity", severity); //$NON-NLS-1$ return builder.toString(); } }