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 }