// Path: src/main/java/com/tw/go/plugins/artifactory/model/GoArtifact.java
// public class GoArtifact {
//     private String repository;
//     private String localPath;
//     private String remotePath;
//     private Splitter splitter;
//     private Map<String, String> properties = new HashMap<>();
//     private Map<String, String> checksums = emptyMap();
// 
// 
//     public GoArtifact(String localPath, String remotePath) {
//         this.localPath = localPath;
//         this.splitter = Splitter.on("/").omitEmptyStrings().trimResults();
// 
//         List<String> segments = splitter.limit(2).splitToList(remotePath);
//         this.repository = segments.get(0);
//         this.remotePath = segments.get(1);
//     }
// 
//     public String localPath() {
//         return localPath;
//     }
// 
//     public String repository() {
//         return repository;
//     }
// 
//     public String remotePath() {
//         return remotePath;
//     }
// 
//     public String remoteName() {
//         return getLast(splitter.split(remotePath));
//     }
// 
//     public void properties(Map<String, String> properties) {
//         this.properties = properties;
//     }
// 
//     public Map<String, String> properties() {
//         return properties;
//     }
// 
//     public String sha1() {
//         if (checksums.isEmpty())
//             this.checksums = computeChecksums();
// 
//         return checksums.get("SHA1");
//     }
// 
//     public String md5() {
//         if (checksums.isEmpty())
//             this.checksums = computeChecksums();
// 
//         return checksums.get("MD5");
//     }
// 
//     @Override
//     public int hashCode() {
//         int result = repository.hashCode();
//         result = 31 * result + localPath.hashCode();
//         result = 31 * result + remotePath.hashCode();
//         result = 31 * result + (properties != null ? properties.hashCode() : 0);
//         return result;
//     }
// 
//     @Override
//     public boolean equals(Object o) {
//         if (!(o instanceof GoArtifact)) return false;
// 
//         GoArtifact artifact = (GoArtifact) o;
// 
//         return remotePath.equals(artifact.remotePath)
//                 && localPath.equals(artifact.localPath)
//                 && repository.equals(artifact.repository)
//                 && properties.equals(artifact.properties);
//     }
// 
//     @Override
//     public String toString() {
//         return Objects.toStringHelper(this)
//                 .add("localPath", localPath)
//                 .add("remotePath", format("%s/%s", repository, remotePath))
//                 .add("properties", properties)
//                 .toString();
//     }
// 
//     private Map<String, String> computeChecksums() {
//         try {
//             return FileChecksumCalculator.calculateChecksums(new File(localPath), "SHA1", "MD5");
//         } catch (Exception e) {
//             throw new RuntimeException(e);
//         }
//     }
// }
// 
// Path: src/main/java/com/tw/go/plugins/artifactory/model/GoBuildDetails.java
// public class GoBuildDetails {
//     private String name;
//     private String number;
//     private String url;
//     private DateTime startedAt;
//     private Collection<GoArtifact> goArtifacts = new ArrayList<>();
//     private Map<String, String> envVars = new HashMap<>();
// 
//     public GoBuildDetails(String name, String number, DateTime startedAt) {
//         this.name = name;
//         this.number = number;
//         this.startedAt = startedAt;
//     }
// 
//     public String buildName() {
//         return name;
//     }
// 
//     public String buildNumber() {
//         return number;
//     }
// 
//     public DateTime startedAt() {
//         return startedAt;
//     }
// 
//     public void artifacts(Collection<GoArtifact> artifacts) {
//         goArtifacts = artifacts;
//     }
// 
//     public List<GoArtifact> artifacts() {
//         return copyOf(goArtifacts);
//     }
// 
//     public String url() {
//         return url;
//     }
// 
//     public void url(String url) {
//         this.url = url;
//     }
// 
//     public void environmentVariables(Map<String, String> envVars) {
//         this.envVars = envVars;
//     }
// 
//     public Map<String, String> environmentVariables() {
//         return copyOf(this.envVars);
//     }
// }


import com.google.common.base.Function;
import com.tw.go.plugins.artifactory.model.GoArtifact;
import com.tw.go.plugins.artifactory.model.GoBuildDetails;
import org.jfrog.build.api.Artifact;
import org.jfrog.build.api.Build;
import org.jfrog.build.api.Module;
import org.jfrog.build.api.builder.ArtifactBuilder;
import org.jfrog.build.api.builder.BuildInfoBuilder;
import org.jfrog.build.api.builder.ModuleBuilder;
import java.util.*;
import static com.google.common.collect.Collections2.transform;
import static com.google.common.collect.Lists.newArrayList;
import static org.jfrog.build.api.Build.STARTED_FORMAT;
import static org.jfrog.build.api.BuildInfoProperties.BUILD_INFO_ENVIRONMENT_PREFIX;
import static org.joda.time.format.DateTimeFormat.forPattern;
package com.tw.go.plugins.artifactory.client;




public class BuildMap implements Function<GoBuildDetails, Build> {

    @Override
    public Build apply(GoBuildDetails buildDetails) {
        Module module = new ModuleBuilder()
                .id(buildDetails.buildName())
// Path: src/main/java/com/tw/go/plugins/artifactory/model/GoArtifact.java
// public class GoArtifact {
//     private String repository;
//     private String localPath;
//     private String remotePath;
//     private Splitter splitter;
//     private Map<String, String> properties = new HashMap<>();
//     private Map<String, String> checksums = emptyMap();
// 
// 
//     public GoArtifact(String localPath, String remotePath) {
//         this.localPath = localPath;
//         this.splitter = Splitter.on("/").omitEmptyStrings().trimResults();
// 
//         List<String> segments = splitter.limit(2).splitToList(remotePath);
//         this.repository = segments.get(0);
//         this.remotePath = segments.get(1);
//     }
// 
//     public String localPath() {
//         return localPath;
//     }
// 
//     public String repository() {
//         return repository;
//     }
// 
//     public String remotePath() {
//         return remotePath;
//     }
// 
//     public String remoteName() {
//         return getLast(splitter.split(remotePath));
//     }
// 
//     public void properties(Map<String, String> properties) {
//         this.properties = properties;
//     }
// 
//     public Map<String, String> properties() {
//         return properties;
//     }
// 
//     public String sha1() {
//         if (checksums.isEmpty())
//             this.checksums = computeChecksums();
// 
//         return checksums.get("SHA1");
//     }
// 
//     public String md5() {
//         if (checksums.isEmpty())
//             this.checksums = computeChecksums();
// 
//         return checksums.get("MD5");
//     }
// 
//     @Override
//     public int hashCode() {
//         int result = repository.hashCode();
//         result = 31 * result + localPath.hashCode();
//         result = 31 * result + remotePath.hashCode();
//         result = 31 * result + (properties != null ? properties.hashCode() : 0);
//         return result;
//     }
// 
//     @Override
//     public boolean equals(Object o) {
//         if (!(o instanceof GoArtifact)) return false;
// 
//         GoArtifact artifact = (GoArtifact) o;
// 
//         return remotePath.equals(artifact.remotePath)
//                 && localPath.equals(artifact.localPath)
//                 && repository.equals(artifact.repository)
//                 && properties.equals(artifact.properties);
//     }
// 
//     @Override
//     public String toString() {
//         return Objects.toStringHelper(this)
//                 .add("localPath", localPath)
//                 .add("remotePath", format("%s/%s", repository, remotePath))
//                 .add("properties", properties)
//                 .toString();
//     }
// 
//     private Map<String, String> computeChecksums() {
//         try {
//             return FileChecksumCalculator.calculateChecksums(new File(localPath), "SHA1", "MD5");
//         } catch (Exception e) {
//             throw new RuntimeException(e);
//         }
//     }
// }
// 
// Path: src/main/java/com/tw/go/plugins/artifactory/model/GoBuildDetails.java
// public class GoBuildDetails {
//     private String name;
//     private String number;
//     private String url;
//     private DateTime startedAt;
//     private Collection<GoArtifact> goArtifacts = new ArrayList<>();
//     private Map<String, String> envVars = new HashMap<>();
// 
//     public GoBuildDetails(String name, String number, DateTime startedAt) {
//         this.name = name;
//         this.number = number;
//         this.startedAt = startedAt;
//     }
// 
//     public String buildName() {
//         return name;
//     }
// 
//     public String buildNumber() {
//         return number;
//     }
// 
//     public DateTime startedAt() {
//         return startedAt;
//     }
// 
//     public void artifacts(Collection<GoArtifact> artifacts) {
//         goArtifacts = artifacts;
//     }
// 
//     public List<GoArtifact> artifacts() {
//         return copyOf(goArtifacts);
//     }
// 
//     public String url() {
//         return url;
//     }
// 
//     public void url(String url) {
//         this.url = url;
//     }
// 
//     public void environmentVariables(Map<String, String> envVars) {
//         this.envVars = envVars;
//     }
// 
//     public Map<String, String> environmentVariables() {
//         return copyOf(this.envVars);
//     }
// }


// Path: src/main/java/com/tw/go/plugins/artifactory/client/BuildMap.java
import com.google.common.base.Function;
import com.tw.go.plugins.artifactory.model.GoArtifact;
import com.tw.go.plugins.artifactory.model.GoBuildDetails;
import org.jfrog.build.api.Artifact;
import org.jfrog.build.api.Build;
import org.jfrog.build.api.Module;
import org.jfrog.build.api.builder.ArtifactBuilder;
import org.jfrog.build.api.builder.BuildInfoBuilder;
import org.jfrog.build.api.builder.ModuleBuilder;
import java.util.*;
import static com.google.common.collect.Collections2.transform;
import static com.google.common.collect.Lists.newArrayList;
import static org.jfrog.build.api.Build.STARTED_FORMAT;
import static org.jfrog.build.api.BuildInfoProperties.BUILD_INFO_ENVIRONMENT_PREFIX;
import static org.joda.time.format.DateTimeFormat.forPattern;

package com.tw.go.plugins.artifactory.client;




public class BuildMap implements Function<GoBuildDetails, Build> {

    @Override
    public Build apply(GoBuildDetails buildDetails) {
        Module module = new ModuleBuilder()
                .id(buildDetails.buildName())
                .artifacts(artifactsFrom(buildDetails))