package hudson.plugins.jira.model;
import com.atlassian.jira.rest.client.api.domain.Version;
import java.util.Calendar;
public class JiraVersion implements Comparable<JiraVersion> {
private final String name;
private final Calendar releaseDate;
private final boolean released;
private final boolean archived;
public JiraVersion(String name, Calendar releaseDate, boolean released, boolean archived) {
this.name = name;
this.releaseDate = releaseDate;
this.released = released;
this.archived = archived;
}
public JiraVersion(Version version) {
this(version.getName(), version.getReleaseDate() == null ? null : version.getReleaseDate().toGregorianCalendar(), version.isReleased(), version.isArchived());
}
public int compareTo(JiraVersion that) {
int result = this.releaseDate.compareTo(that.releaseDate);
if (result == 0) {
return this.name.compareTo(that.name);
}
return result;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + (archived ? 1231 : 1237);
result = prime * result + ((name == null) ? 0 : name.hashCode());
result = prime * result
+ ((releaseDate == null) ? 0 : releaseDate.hashCode());
result = prime * result + (released ? 1231 : 1237);
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
JiraVersion other = (JiraVersion) obj;
if (archived != other.archived) {
return false;
}
if (name == null) {
if (other.name != null) {
return false;
}
} else if (!name.equals(other.name)) {
return false;
}
if (releaseDate == null) {
if (other.releaseDate != null) {
return false;
}
} else if (!releaseDate.equals(other.releaseDate)) {
return false;
}
if (released != other.released) {
return false;
}
return true;
}
public String getName() {
return name;
}
public Calendar getReleaseDate() {
return releaseDate;
}
public boolean isReleased() {
return released;
}
public boolean isArchived() {
return archived;
}
}