package jp.co.worksap.workspace.ide.eclipse; import static com.google.common.base.Preconditions.checkNotNull; import java.io.InputStream; import javax.annotation.CheckForNull; import javax.annotation.Nonnull; import org.codehaus.jackson.map.annotate.JsonDeserialize; import lombok.Value; import com.google.common.collect.ComparisonChain; /** * @see http://semver.org/ * @author Kengo TODA (toda_k@worksap.co.jp) */ @JsonDeserialize(using = VersionDeserializer.class) @Value public class Version implements Comparable<Version> { private final int major; private final int minor; private final int patch; @Override public int compareTo(Version another) { checkNotNull(another); return ComparisonChain.start() .compare(major, another.major) .compare(minor, another.minor) .compare(patch, another.patch) .result(); } @Nonnull public static Version fromString(@Nonnull String string) { return new VersionLiteralConverter().apply(string); } @CheckForNull InputStream loadUrlInformation() { return getClass().getResourceAsStream(String.format("downloads-%d.%d.%d.properties", major, minor, patch)); } }