package com.jfrog.bintray.client.impl.model; import com.jfrog.bintray.client.api.ObjectMapperHelper; import com.jfrog.bintray.client.api.details.PackageDetails; import com.jfrog.bintray.client.api.model.Pkg; import org.codehaus.jackson.map.ObjectMapper; import org.joda.time.DateTime; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.IOException; import java.util.List; import java.util.Map; /** * @author Noam Y. Tenne */ public class PackageImpl implements Pkg { private static final Logger log = LoggerFactory.getLogger(PackageImpl.class); private String name; private String repository; private String owner; private String description; private List<String> labels; private List<String> attributeNames; private Integer rating; private Integer ratingCount; private Integer followersCount; private DateTime created; private List<String> versions; private String latestVersion; private DateTime updated; private List<String> linkedToRepos; private List<String> systemIds; private List<String> licenses; private String vcsUrl; private Map<String, Object> other; public PackageImpl(PackageDetails packageDetails) { this.name = packageDetails.getName(); this.repository = packageDetails.getRepo(); this.owner = packageDetails.getOwner(); this.description = packageDetails.getDescription(); this.labels = packageDetails.getLabels(); this.attributeNames = packageDetails.getAttributeNames(); this.ratingCount = packageDetails.getRatingCount(); this.followersCount = packageDetails.getFollowersCount(); this.created = packageDetails.getCreated(); this.versions = packageDetails.getVersions(); this.latestVersion = packageDetails.getLatestVersion(); this.updated = packageDetails.getUpdated(); this.linkedToRepos = packageDetails.getLinkedRepos(); this.systemIds = packageDetails.getSystemIds(); this.licenses = packageDetails.getLicenses(); this.vcsUrl = packageDetails.getVcsUrl(); this.other = packageDetails.other(); } public PackageImpl(String name, String repository, String owner, String description, List<String> labels, List<String> attributeNames, Integer rating, Integer ratingCount, Integer followersCount, DateTime created, List<String> versions, String latestVersion, DateTime updated, List<String> linkedToRepos, List<String> systemIds) { this.name = name; this.repository = repository; this.owner = owner; this.description = description; this.labels = labels; this.attributeNames = attributeNames; this.rating = rating; this.ratingCount = ratingCount; this.followersCount = followersCount; this.created = created; this.versions = versions; this.latestVersion = latestVersion; this.updated = updated; this.linkedToRepos = linkedToRepos; this.systemIds = systemIds; } public static String getCreateUpdateJson(PackageDetails packageDetails) throws IOException { ObjectMapper mapper = ObjectMapperHelper.get(); String jsonContent; try { jsonContent = mapper.writeValueAsString(packageDetails); } catch (IOException e) { log.error("Can't process the json file: " + e.getMessage()); throw e; } return jsonContent; } @Override public String name() { return name; } @Override public String repository() { return repository; } @Override public String owner() { return owner; } @Override public String description() { return description; } @Override public List<String> labels() { return labels; } @Override public List<String> attributeNames() { return attributeNames; } @Override public Integer rating() { return rating; } @Override public Integer ratingCount() { return ratingCount; } @Override public Integer followersCount() { return followersCount; } @Override public DateTime created() { return created; } @Override public List<String> versions() { return versions; } @Override public String latestVersion() { return latestVersion; } @Override public DateTime updated() { return updated; } @Override public List<String> linkedToRepos() { return linkedToRepos; } @Override public List<String> systemIds() { return systemIds; } @Override public List<String> licenses() { return licenses; } @Override public String vcsUrl() { return vcsUrl; } @Override public Object getFieldByKey(String key) { return other.get(key); } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; PackageImpl aPackage = (PackageImpl) o; if (!name.equals(aPackage.name)) return false; return true; } @Override public int hashCode() { return name.hashCode(); } @Override public String toString() { return "Package{" + "getName='" + name + '\'' + ", repository='" + repository + '\'' + ", owner='" + owner + '\'' + ", description='" + description + '\'' + ", labels=" + labels + ", attributeNames=" + attributeNames + ", rating=" + rating + ", ratingCount=" + ratingCount + ", followersCount=" + followersCount + ", created=" + created + ", versions=" + versions + ", latestVersion='" + latestVersion + '\'' + ", updated=" + updated + ", linkedToRepos='" + linkedToRepos + '\'' + ", systemIds=" + systemIds + '}'; } }