Merge tag 'v2.3.20' into testing
[gpl/argeo-jcr.git] / org.argeo.slc.repo / src / org / argeo / slc / repo / ArtifactDistribution.java
diff --git a/org.argeo.slc.repo/src/org/argeo/slc/repo/ArtifactDistribution.java b/org.argeo.slc.repo/src/org/argeo/slc/repo/ArtifactDistribution.java
new file mode 100644 (file)
index 0000000..bc496f1
--- /dev/null
@@ -0,0 +1,63 @@
+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();
+       }
+
+}