/**
* The contents of this file are subject to the license and copyright
* detailed in the LICENSE file at the root of the source
* tree and available online at
*
* https://github.com/keeps/roda
*/
package org.roda.core.data.v2.formats;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import javax.xml.bind.annotation.XmlRootElement;
import org.roda.core.data.common.RodaConstants;
import org.roda.core.data.v2.IsModelObject;
import org.roda.core.data.v2.NamedIndexedModel;
import org.roda.core.data.v2.index.IsIndexed;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
@XmlRootElement(name = RodaConstants.RODA_OBJECT_FORMAT)
@JsonInclude(JsonInclude.Include.NON_NULL)
public class Format extends NamedIndexedModel implements IsModelObject, IsIndexed {
private static final long serialVersionUID = 7178184202935641440L;
private String definition = null;
private List<String> categories = null;
private String latestVersion = null;
private Integer popularity;
private String developer = null;
private Date initialRelease = null;
private String standard = null;
private boolean isOpenFormat = true;
private List<String> websites = null;
private String provenanceInformation = null;
private List<String> extensions = new ArrayList<>();
private List<String> mimetypes = new ArrayList<>();
private List<String> pronoms = new ArrayList<>();
private List<String> utis = new ArrayList<>();
private List<String> alternativeDesignations = new ArrayList<>();
private List<String> versions = new ArrayList<>();
public Format() {
super();
}
public Format(Format format) {
super(format.getId(), format.getName());
this.definition = format.getDefinition();
this.categories = format.getCategories();
this.latestVersion = format.getLatestVersion();
this.popularity = format.getPopularity();
this.developer = format.getDeveloper();
this.initialRelease = format.getInitialRelease();
this.standard = format.getStandard();
this.isOpenFormat = format.isOpenFormat();
this.websites = format.getWebsites();
this.provenanceInformation = format.getProvenanceInformation();
this.extensions = new ArrayList<>(format.getExtensions());
this.mimetypes = new ArrayList<>(format.getMimetypes());
this.pronoms = new ArrayList<>(format.getPronoms());
this.utis = new ArrayList<>(format.getUtis());
this.alternativeDesignations = new ArrayList<>(format.getAlternativeDesignations());
this.versions = new ArrayList<>(format.getVersions());
}
@JsonIgnore
@Override
public int getClassVersion() {
return 2;
}
public String getDefinition() {
return definition;
}
public void setDefinition(String definition) {
this.definition = definition;
}
public String getLatestVersion() {
return latestVersion;
}
public void setLatestVersion(String latestVersion) {
this.latestVersion = latestVersion;
}
public Integer getPopularity() {
return popularity;
}
public void setPopularity(Integer popularity) {
this.popularity = popularity;
}
public String getDeveloper() {
return developer;
}
public void setDeveloper(String developer) {
this.developer = developer;
}
public Date getInitialRelease() {
return initialRelease;
}
public void setInitialRelease(Date initialRelease) {
this.initialRelease = initialRelease;
}
public String getStandard() {
return standard;
}
public void setStandard(String standard) {
this.standard = standard;
}
public boolean isOpenFormat() {
return isOpenFormat;
}
public void setOpenFormat(boolean isOpenFormat) {
this.isOpenFormat = isOpenFormat;
}
public String getProvenanceInformation() {
return provenanceInformation;
}
public void setProvenanceInformation(String provenanceInformation) {
this.provenanceInformation = provenanceInformation;
}
public List<String> getCategories() {
return categories;
}
public void setCategories(List<String> categories) {
this.categories = categories;
}
public List<String> getWebsites() {
return websites;
}
public void setWebsites(List<String> websites) {
this.websites = websites;
}
public List<String> getExtensions() {
return extensions;
}
public void setExtensions(List<String> extensions) {
this.extensions = extensions;
}
public List<String> getMimetypes() {
return mimetypes;
}
public void setMimetypes(List<String> mimetypes) {
this.mimetypes = mimetypes;
}
public List<String> getPronoms() {
return pronoms;
}
public void setPronoms(List<String> pronoms) {
this.pronoms = pronoms;
}
public List<String> getUtis() {
return utis;
}
public void setUtis(List<String> utis) {
this.utis = utis;
}
public List<String> getAlternativeDesignations() {
return alternativeDesignations;
}
public void setAlternativeDesignations(List<String> alternativeDesignations) {
this.alternativeDesignations = alternativeDesignations;
}
public List<String> getVersions() {
return versions;
}
public void setVersions(List<String> versions) {
this.versions = versions;
}
@Override
public String toString() {
return "Format [id=" + getId() + ", name=" + getName() + ", definition=" + definition + ", categories=" + categories
+ ", latestVersion=" + latestVersion + ", popularity=" + popularity + ", developer=" + developer
+ ", initialRelease=" + initialRelease + ", standard=" + standard + ", isOpenFormat=" + isOpenFormat
+ ", websites=" + websites + ", provenanceInformation=" + provenanceInformation + ", extensions=" + extensions
+ ", mimetypes=" + mimetypes + ", pronoms=" + pronoms + ", utis=" + utis + ", alternativeDesignations="
+ alternativeDesignations + ", versions=" + versions + "]";
}
@Override
public List<String> toCsvHeaders() {
return Arrays.asList("id", "name", "definition", "categories", "latestVersion", "popularity", "developer",
"initialRelease", "standard", "isOpenFormat", "websites", "provenanceInformation", "extensions", "mimetypes",
"pronoms", "utis", "alternativeDesignations", "versions");
}
@Override
public List<Object> toCsvValues() {
return Arrays.asList(getId(), getName(), definition, categories, latestVersion, popularity, developer,
initialRelease, standard, isOpenFormat, websites, provenanceInformation, extensions, mimetypes, pronoms, utis,
alternativeDesignations, versions);
}
@JsonIgnore
@Override
public String getUUID() {
return getId();
}
@Override
public List<String> liteFields() {
return Arrays.asList(RodaConstants.INDEX_UUID);
}
}