/*
* RHQ Management Platform
* Copyright (C) 2005-2014 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 java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.PrePersist;
import javax.persistence.PreUpdate;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
@Entity
@NamedQueries({
@NamedQuery(name = Advisory.QUERY_FIND_ALL, query = "SELECT adv FROM Advisory adv"),
@NamedQuery(name = Advisory.QUERY_FIND_BY_ADV, query = "SELECT adv " + " FROM Advisory adv "
+ " WHERE adv.advisory = :advisory "),
@NamedQuery(name = Advisory.QUERY_DELETE_BY_ADV_ID, query = "DELETE Advisory adv WHERE adv.id = :advid"),
@NamedQuery(name = Advisory.QUERY_FIND_BY_ADV_ID, query = "SELECT adv FROM Advisory adv WHERE adv.id = :id "),
@NamedQuery(name = Advisory.QUERY_FIND_COMPOSITE_BY_ID, query = "SELECT new org.rhq.core.domain.content.composite.AdvisoryDetailsComposite( "
+ " a, "
+ " a.advisory, "
+ " a.advisoryType,"
+ " a.topic,"
+ " a.synopsis,"
+ " a.description,"
+ " a.solution,"
+ " a.severity,"
+ " a.update_date,"
+ " a.issue_date"
+ " ) "
+ " FROM Advisory a "
+ " WHERE a.id = :id ") })
@SequenceGenerator(allocationSize = org.rhq.core.domain.util.Constants.ALLOCATION_SIZE, name = "RHQ_ADVISORY_ID_SEQ", sequenceName = "RHQ_ADVISORY_ID_SEQ")
@Table(name = "RHQ_ADVISORY")
public class Advisory implements Serializable {
private static final long serialVersionUID = 1L;
public static final String QUERY_FIND_ALL = "Advisory.findAll";
public static final String QUERY_FIND_BY_ADV = "Advisory.findByAdv";
public static final String QUERY_DELETE_BY_ADV_ID = "Advisory.deleteByAdvId";
public static final String QUERY_FIND_COMPOSITE_BY_ID = "Advisory.queryFindCompositeByAdvId";
public static final String QUERY_FIND_BY_ADV_ID = "Advisory.queryFindByAdvId";
@Column(name = "ID", nullable = false)
@GeneratedValue(strategy = GenerationType.AUTO, generator = "RHQ_ADVISORY_ID_SEQ")
@Id
private int id;
@Column(name = "ADVISORY", nullable = false)
private String advisory;
@Column(name = "ADVISORY_TYPE", nullable = false)
private String advisoryType;
@Column(name = "ADVISORY_REL", nullable = true)
private String advisory_rel;
@Column(name = "ADVISORY_NAME", nullable = true)
private String advisory_name;
@Column(name = "DESCRIPTION", nullable = true)
private String description;
@Column(name = "SYNOPSIS", nullable = false)
private String synopsis;
@Column(name = "TOPIC", nullable = true)
private String topic;
@Column(name = "SOLUTION", nullable = true)
private String solution;
@Column(name = "SEVERITY", nullable = true)
private String severity;
@Column(name = "ISSUE_DATE", nullable = true)
private long issue_date;
@Column(name = "UPDATE_DATE", nullable = true)
private long update_date;
@Column(name = "CTIME", nullable = false)
private long ctime;
@Column(name = "LAST_MODIFIED", nullable = false)
private long lastModifiedDate;
@OneToMany(mappedBy = "advisory", fetch = FetchType.EAGER, cascade = CascadeType.ALL)
private Set<AdvisoryPackage> advisorypkgs;
@OneToMany(mappedBy = "advisory", fetch = FetchType.EAGER, cascade = CascadeType.ALL)
private Set<AdvisoryBuglist> advisorybugs;
public Advisory() {
}
public Advisory(String advisory, String advisoryType, String synopsis) {
setAdvisory(advisory);
setAdvisoryType(advisoryType);
setSynopsis(synopsis);
}
public String getAdvisory() {
return advisory;
}
public void setAdvisory(String advisory) {
this.advisory = advisory;
}
public String getAdvisoryType() {
return advisoryType;
}
public void setAdvisoryType(String advisoryType) {
this.advisoryType = advisoryType;
}
public String getAdvisory_rel() {
return advisory_rel;
}
public void setAdvisory_rel(String advisoryRel) {
advisory_rel = advisoryRel;
}
public String getAdvisory_name() {
return advisory_name;
}
public void setAdvisory_name(String advisoryName) {
advisory_name = advisoryName;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getSynopsis() {
return synopsis;
}
public void setSynopsis(String synopsis) {
this.synopsis = synopsis;
}
public String getTopic() {
return topic;
}
public void setTopic(String topic) {
this.topic = topic;
}
public String getSolution() {
return solution;
}
public void setSolution(String solution) {
this.solution = solution;
}
public String getSeverity() {
return severity;
}
public void setSeverity(String severity) {
this.severity = severity;
}
public long getIssue_date() {
return issue_date;
}
public void setIssue_date(long issueDate) {
issue_date = issueDate;
}
public long getUpdate_date() {
return update_date;
}
public void setUpdate_date(long updateDate) {
update_date = updateDate;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public void setLastModifiedDate(long lastModifiedDate) {
this.lastModifiedDate = lastModifiedDate;
}
public long getLastModifiedDate() {
return lastModifiedDate;
}
public Set<AdvisoryPackage> getAdvisorypkgs() {
return advisorypkgs;
}
public void setAdvisorypkgs(Set<AdvisoryPackage> advisorypkgs) {
this.advisorypkgs = advisorypkgs;
}
public Set<AdvisoryBuglist> getAdvisorybugs() {
return advisorybugs;
}
public void setAdvisorybugs(Set<AdvisoryBuglist> advisorybugs) {
this.advisorybugs = advisorybugs;
}
// Object Overridden Methods --------------------------------------------
@Override
public String toString() {
return "Advisory [Advisory=" + advisory + ", Type=" + advisoryType + ", Name=" + advisory_name + "]";
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null) {
return false;
}
if (!(o instanceof Advisory)) {
return false;
}
Advisory adv = (Advisory) o;
if ((getAdvisory() != null) ? (!getAdvisory().equals(adv.getAdvisory())) : (adv.getAdvisory() != null)) {
return false;
}
return true;
}
public long getCtime() {
return ctime;
}
@PrePersist
void onPersist() {
long now = System.currentTimeMillis();
this.ctime = now;
this.setLastModifiedDate(now);
}
@PreUpdate
void onUpdate() {
this.setLastModifiedDate(System.currentTimeMillis());
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = (prime * result) + ((getAdvisory() == null) ? 0 : getAdvisory().hashCode());
return result;
}
}