001 package cpw.mods.fml.common.versioning;
002
003 public class DefaultArtifactVersion implements ArtifactVersion
004 {
005
006 private ComparableVersion comparableVersion;
007 private String label;
008 private boolean unbounded;
009 private VersionRange range;
010
011 public DefaultArtifactVersion(String versionNumber)
012 {
013 comparableVersion = new ComparableVersion(versionNumber);
014 range = VersionRange.createFromVersion(versionNumber, this);
015 }
016
017 public DefaultArtifactVersion(String label, VersionRange range)
018 {
019 this.label = label;
020 this.range = range;
021 }
022 public DefaultArtifactVersion(String label, String version)
023 {
024 this(version);
025 this.label = label;
026 }
027
028 public DefaultArtifactVersion(String string, boolean unbounded)
029 {
030 this.label = string;
031 this.unbounded = true;
032 }
033
034 @Override
035 public boolean equals(Object obj)
036 {
037 return ((DefaultArtifactVersion)obj).containsVersion(this);
038 }
039
040 @Override
041 public int compareTo(ArtifactVersion o)
042 {
043 return unbounded ? 0 : this.comparableVersion.compareTo(((DefaultArtifactVersion)o).comparableVersion);
044 }
045
046 @Override
047 public String getLabel()
048 {
049 return label;
050 }
051
052 @Override
053 public boolean containsVersion(ArtifactVersion source)
054 {
055 if (!source.getLabel().equals(getLabel()))
056 {
057 return false;
058 }
059 if (unbounded)
060 {
061 return true;
062 }
063 if (range != null)
064 {
065 return range.containsVersion(source);
066 }
067 else
068 {
069 return false;
070 }
071 }
072
073 @Override
074 public String getVersionString()
075 {
076 return comparableVersion == null ? "unknown" : comparableVersion.toString();
077 }
078
079 @Override
080 public String getRangeString()
081 {
082 return range == null ? "any" : range.toString();
083 }
084 @Override
085 public String toString()
086 {
087 return label == null ? comparableVersion.toString() : label + ( unbounded ? "" : "@" + range);
088 }
089 }