package org.jfrog.build.context; import org.jfrog.build.api.Dependency; import org.jfrog.build.api.Module; import org.jfrog.build.extractor.clientConfiguration.ArtifactoryClientConfiguration; import org.jfrog.build.client.DeployDetails; import java.util.ArrayList; import java.util.Comparator; import java.util.List; import java.util.Set; import java.util.TreeSet; /** * Context container for Ivy builds, holds a set of {@link DeployDetails} for artifact to deploy after the build is * complete, as well as a final build-info object. * * @author Tomer Cohen */ public class BuildContext { private final Set<DeployDetails> deployDetails; private final List<Module> modules; private final List<Dependency> dependencies; private final ArtifactoryClientConfiguration clientConf; private long buildStartTime; public BuildContext(ArtifactoryClientConfiguration clientConf) { this.clientConf = clientConf; //Sort the deploy details by file name to ensure consistent publish order deployDetails = new TreeSet(new Comparator<DeployDetails>() { public int compare(DeployDetails details, DeployDetails otherDetails) { return details.getFile().compareTo(otherDetails.getFile()); } }); modules = new ArrayList<Module>(); dependencies = new ArrayList<Dependency>(); buildStartTime = System.currentTimeMillis(); } public void addDeployDetailsForModule(DeployDetails deployDetails) { this.deployDetails.add(deployDetails); } public void addModule(Module module) { this.modules.add(module); } public List<Module> getModules() { return modules; } public Set<DeployDetails> getDeployDetails() { return deployDetails; } public void addDependency(Dependency dependency) { this.dependencies.add(dependency); } public List<Dependency> getDependencies() { return dependencies; } public ArtifactoryClientConfiguration getClientConf() { return clientConf; } public long getBuildStartTime() { return buildStartTime; } public void setBuildStartTime(long buildStartTime) { this.buildStartTime = buildStartTime; } }