Newer
Older
ultramine_bootstrap / src / main / java / org / ultramine / bootstrap / maven / MavenDependency.java
@vlad20012 vlad20012 on 31 Jul 2017 2 KB Initial commit
package org.ultramine.bootstrap.maven;

import org.ultramine.bootstrap.deps.IDependency;
import org.ultramine.bootstrap.deps.IRepository;
import org.ultramine.bootstrap.deps.IDownloadable;

import java.util.List;
import java.util.Objects;

public class MavenDependency implements IDependency
{
	public final String group;
	public final String artifactName;
	public final String version;

	public MavenDependency(String group, String artifactName, String version)
	{
		this.group = Objects.requireNonNull(group);
		this.artifactName = Objects.requireNonNull(artifactName);
		this.version = Objects.requireNonNull(version);
	}

	public MavenDependency(String name)
	{
		String[] parts = name.split(":", 3);
		this.group = parts[0];
		this.artifactName = parts[1];
		this.version = parts[2];
	}

	public String getGroup()
	{
		return group;
	}

	public String getArtifactName()
	{
		return artifactName;
	}

	public String getVersion()
	{
		return version;
	}

	public String getArtifactBaseDir()
	{
		return group.replace('.', '/') + "/" + artifactName + "/" + version;
	}

	public String getArtifactFilename(String classifier, String extension)
	{
		return artifactName + "-" + version + (classifier == null || classifier.isEmpty() ? "" : "-" + classifier) + "." + extension;
	}

	public String getArtifactPath()
	{
		return getArtifactPath(null);
	}

	public String getArtifactPath(String classifier)
	{
		return getArtifactBaseDir() + "/" + getArtifactFilename(classifier);
	}

	public String getArtifactPath(String classifier, String extension)
	{
		return getArtifactBaseDir() + "/" + getArtifactFilename(classifier, extension);
	}

	public String getArtifactFilename()
	{
		return getArtifactFilename(null);
	}

	public String getArtifactFilename(String classifier)
	{
		return getArtifactFilename(classifier, "jar");
	}

	public IDownloadable resolve(List<IRepository> repositories)
	{
		return new MavenDownloadable(repositories, this);
	}

	@Override
	public boolean equals(Object o)
	{
		if(this == o) return true;
		if(o == null || getClass() != o.getClass()) return false;
		MavenDependency that = (MavenDependency) o;
		return Objects.equals(group, that.group) &&
				Objects.equals(artifactName, that.artifactName) &&
				Objects.equals(version, that.version);
	}

	@Override
	public int hashCode()
	{
		return Objects.hash(group, artifactName, version);
	}

	@Override
	public String toString()
	{
		return group+':'+ artifactName +':'+version;
	}
}