package org.argeo.slc.repo; import org.argeo.slc.CategoryNameVersion; import org.argeo.slc.build.Distribution; import org.eclipse.aether.artifact.Artifact; import org.eclipse.aether.artifact.DefaultArtifact; /** A {@link Distribution} based on an Aether {@link Artifact} */ public class ArtifactDistribution implements Distribution, CategoryNameVersion { private final Artifact artifact; public ArtifactDistribution(Artifact artifact) { this.artifact = artifact; } public ArtifactDistribution(String coords) { this(new DefaultArtifact(coords)); } /** Aether coordinates of the underlying artifact. */ public String getDistributionId() { return artifact.toString(); } public Artifact getArtifact() { return artifact; } public String getName() { return getArtifact().getArtifactId(); } public String getVersion() { return getArtifact().getVersion(); } public String getCategory() { return getArtifact().getGroupId(); } @Override public int hashCode() { return artifact.hashCode(); } @Override public boolean equals(Object obj) { if (obj instanceof CategoryNameVersion) { CategoryNameVersion cnv = (CategoryNameVersion) obj; return getCategory().equals(cnv.getCategory()) && getName().equals(cnv.getName()) && getVersion().equals(cnv.getVersion()); } else return artifact.equals(obj); } @Override public String toString() { return getDistributionId(); } }