package org.axway.grapes.commons.datamodel;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import java.util.ArrayList;
import java.util.List;
/**
* Artifact Model Class
*
* <P> Model Objects are used in the communication with the Grapes server. These objects are serialized/un-serialized in JSON objects to be exchanged via http REST calls.
*
* @author jdcoffre
*/
public class Artifact {
private String artifactId;
private String groupId = "";
private String version = "";
private String classifier = "";
private String type = "";
private String extension = "";
private boolean promoted = false;
private String size;
private String downloadUrl;
private String provider;
private List<String> licenses = new ArrayList<String>();
protected Artifact() {
// Should only be instantiated via the DataModelObjectFactory
}
public String getArtifactId() {
return artifactId;
}
public void setArtifactId(final String artifactId) {
this.artifactId = artifactId;
}
public String getGroupId() {
return groupId;
}
public void setGroupId(final String groupId) {
this.groupId = groupId;
}
public String getVersion() {
return version;
}
public void setVersion(final String version) {
this.version = version;
}
public String getType() {
return type;
}
public void setType(final String type) {
this.type = type;
}
public boolean isPromoted() {
return promoted;
}
public void setPromoted(final boolean promoted) {
this.promoted = promoted;
}
public String getClassifier() {
return classifier;
}
public void setClassifier(final String classifier) {
this.classifier = classifier;
}
public List<String> getLicenses() {
return licenses;
}
public void setLicenses(final List<String> licenses) {
this.licenses = licenses;
}
public void addLicense(final String licenseName){
licenses.add(licenseName);
}
public String getSize() {
return size;
}
public void setSize(final String size) {
this.size = size;
}
public String getDownloadUrl() {
return downloadUrl;
}
public void setDownloadUrl(final String downloadUrl) {
this.downloadUrl = downloadUrl;
}
public String getExtension() {
return extension;
}
public void setExtension(final String extension) {
this.extension = extension;
}
public String getProvider() {
return provider;
}
public void setProvider(final String provider) {
this.provider = provider;
}
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonIgnore
public String getGavc(){
final StringBuilder sb = new StringBuilder();
sb.append(groupId);
sb.append(":");
sb.append(artifactId);
sb.append(":");
sb.append(version);
sb.append(":");
sb.append(classifier);
sb.append(":");
sb.append(extension);
return sb.toString();
}
/**
* Checks if the artifact is the same than an other one.
*
* @param obj Object
* @return <tt>true</tt> only if grId/arId/classifier/version are the same in both.
*/
@Override
public boolean equals(final Object obj){
if(obj instanceof Artifact){
return hashCode() == obj.hashCode();
}
return false;
}
@Override
public int hashCode() {
final StringBuilder sb = new StringBuilder();
sb.append(groupId);
sb.append(artifactId);
sb.append(version);
sb.append(classifier);
sb.append(type);
sb.append(extension);
return sb.toString().hashCode();
}
@Override
public String toString() {
final StringBuilder sb = new StringBuilder();
sb.append(groupId);
sb.append(":");
sb.append(artifactId);
sb.append(":");
sb.append(version);
sb.append(":");
sb.append(classifier);
sb.append(":");
sb.append(type);
sb.append(":");
sb.append(extension);
return sb.toString();
}
}