package io.cattle.platform.configitem.model;
import io.cattle.platform.configitem.model.ItemVersion;
public class DefaultItemVersion implements ItemVersion {
public static final String LATEST = "latest";
long revision;
String sourceRevision;
boolean latest;
public DefaultItemVersion() {
}
public DefaultItemVersion(long revision, String sourceRevision) {
this.revision = revision;
this.sourceRevision = sourceRevision;
}
@Override
public long getRevision() {
return revision;
}
public void setRevision(long revision) {
this.revision = revision;
}
@Override
public boolean isLatest() {
return latest;
}
public void setLatest(boolean latest) {
this.latest = latest;
}
@Override
public String getSourceRevision() {
return sourceRevision;
}
public void setSourceRevision(String sourceRevision) {
this.sourceRevision = sourceRevision;
}
public static DefaultItemVersion fromString(String str) {
DefaultItemVersion result = new DefaultItemVersion();
if (str == null)
return null;
if (LATEST.equals(str)) {
result.setLatest(true);
return result;
}
String[] parts = str.split("-");
if (parts.length > 2) {
parts = new String[] { parts[parts.length - 2], parts[parts.length - 1] };
}
if (parts.length != 2)
return null;
try {
long version = Long.parseLong(parts[0]);
result.setRevision(version);
result.setSourceRevision(parts[1]);
return result;
} catch (NumberFormatException nfe) {
return null;
}
}
@Override
public String toExternalForm() {
if (latest) {
return LATEST;
}
return String.format("%s-%s", revision, sourceRevision);
}
@Override
public String toString() {
return toExternalForm();
}
}