package rocks.inspectit.shared.all.version;
/**
* Holds information about an released version. Beside {@link #version} information, this class
* holds additional information about a release.
*
* @author Ivan Senic
*
*/
public class VersionRelease implements Comparable<VersionRelease> {
/**
* Version information.
*/
private final Version version;
/**
* If this is a pre-release/preview version.
*/
private boolean preRelease;
/**
* Link to the release.
*/
private String link;
/**
* Default constructor.
*
* @param version
* {@link Version} information.
*/
public VersionRelease(Version version) {
this.version = version;
}
/**
* Secondary constructor.
*
* @param version
* Version information.
* @param preRelease
* If this is a pre-release/preview version.
* @param link
* Link to the release.
*/
public VersionRelease(Version version, boolean preRelease, String link) {
this.version = version;
this.preRelease = preRelease;
this.link = link;
}
/**
* Gets {@link #preRelease}.
*
* @return {@link #preRelease}
*/
public boolean isPreRelease() {
return preRelease;
}
/**
* Sets {@link #preRelease}.
*
* @param preRelease
* New value for {@link #preRelease}
*/
public void setPreRelease(boolean preRelease) {
this.preRelease = preRelease;
}
/**
* Gets {@link #link}.
*
* @return {@link #link}
*/
public String getLink() {
return link;
}
/**
* Sets {@link #link}.
*
* @param link
* New value for {@link #link}
*/
public void setLink(String link) {
this.link = link;
}
/**
* Gets {@link #version}.
*
* @return {@link #version}
*/
public Version getVersion() {
return version;
}
/**
* {@inheritDoc}
*/
@Override
public int compareTo(VersionRelease o) {
return version.compareTo(o.version);
}
/**
* {@inheritDoc}
*/
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = (prime * result) + ((link == null) ? 0 : link.hashCode());
result = (prime * result) + (preRelease ? 1231 : 1237);
result = (prime * result) + ((version == null) ? 0 : version.hashCode());
return result;
}
/**
* {@inheritDoc}
*/
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
VersionRelease other = (VersionRelease) obj;
if (link == null) {
if (other.link != null) {
return false;
}
} else if (!link.equals(other.link)) {
return false;
}
if (preRelease != other.preRelease) {
return false;
}
if (version == null) {
if (other.version != null) {
return false;
}
} else if (!version.equals(other.version)) {
return false;
}
return true;
}
}