package com.hubspot.deploy; import java.util.Objects; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.google.common.base.Optional; @JsonIgnoreProperties(ignoreUnknown = true) public abstract class Artifact { private final String name; private final String filename; private final Optional<String> md5sum; private final Optional<String> targetFolderRelativeToTask; public Artifact(String name, String filename, Optional<String> md5sum, Optional<String> targetFolderRelativeToTask) { this.name = name; this.filename = filename; this.md5sum = md5sum; this.targetFolderRelativeToTask = targetFolderRelativeToTask; } public String getName() { return name; } public String getFilename() { return filename; } @JsonIgnore public String getFilenameForCache() { if (md5sum.isPresent()) { return String.format("%s-%s", md5sum.get(), filename); } else { return filename; } } public Optional<String> getMd5sum() { return md5sum; } public Optional<String> getTargetFolderRelativeToTask() { return targetFolderRelativeToTask; } @Override public int hashCode() { return Objects.hash(name, filename, md5sum, targetFolderRelativeToTask); } @Override public boolean equals(Object other) { if (this == other) { return true; } if (other == null || other.getClass() != this.getClass()) { return false; } Artifact that = (Artifact) other; return Objects.equals(this.name, that.name) && Objects.equals(this.filename, that.filename) && Objects.equals(this.md5sum, that.md5sum) && Objects.equals(this.targetFolderRelativeToTask, that.targetFolderRelativeToTask); } @Override public String toString() { return "Artifact{" + "name='" + name + '\'' + ", filename='" + filename + '\'' + ", md5sum=" + md5sum + ", targetFolderRelativeToTask=" + targetFolderRelativeToTask + '}'; } }