package org.gcube.data_catalogue.grsf_publish_ws.json.input; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.validation.Valid; import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; import org.gcube.data_catalogue.grsf_publish_ws.custom_annotations.CkanResource; import org.gcube.data_catalogue.grsf_publish_ws.custom_annotations.CustomField; import org.gcube.data_catalogue.grsf_publish_ws.custom_annotations.Group; import org.gcube.data_catalogue.grsf_publish_ws.custom_annotations.Tag; import org.gcube.data_catalogue.grsf_publish_ws.utils.groups.Source; import org.gcube.data_catalogue.grsf_publish_ws.utils.groups.Status; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; /** * Information that both Stock and Fishery must contain * @author Costantino Perciante at ISTI-CNR (costantino.perciante@isti.cnr.it) */ @JsonIgnoreProperties(value = {"author", "author_contact", "extras", "product_type"}, ignoreUnknown = true) // ignore in serialization/deserialization public class Common { public static final String PRODUCT_TYPE_KEY = "Product type"; @JsonProperty("description") private String description; @JsonProperty("license_id") private String license; // filled automatically by the service @JsonProperty("author") private String author; @JsonProperty("version") private Long version; // filled automatically by the service @JsonProperty("author_contact") private String authorContact; @JsonProperty("maintainer") private String maintainer; @JsonProperty("maintainer_contact") private String maintainerContact; @JsonProperty("data_owner") @CustomField(key="Data owner") private String dataOwner; @JsonProperty("database_sources") @CkanResource @NotNull(message="database_source cannot be null") @Size(min=1, message="database_source cannot be empty") @Valid private List> databaseSources; @JsonProperty("source_of_information") @CkanResource @NotNull(message="source_of_information cannot be null") @Size(min=1, message="source_of_information cannot be empty") @Valid private List> sourceOfInformation; @JsonProperty("short_title") @CustomField(key="Short Title") @NotNull(message="short_title cannot be null") @Size(min=1, message="short_title cannot be empty") private String shortTitle; @JsonProperty("uuid_knowledge_base") @CustomField(key="UUID Knowledge Base") @NotNull(message="uuid_knowledge_base cannot be null") @Size(min=1, message="uuid_knowledge_base cannot be empty") // This will be the identifier of the product!! private String uuid; @JsonProperty("traceability_flag") @CustomField(key="Traceability Flag") @NotNull(message="traceability_flag cannot be null") private boolean traceabilityFlag; @JsonProperty("status") @CustomField(key="Status") @Group @Tag @NotNull(message="status cannot be null") private Status status; // automatically compiled @JsonProperty("product_type") @CustomField(key=PRODUCT_TYPE_KEY) @Tag private String productType; @JsonProperty("extras") private Map> extras = new HashMap<>(); public Common() { super(); } /** * Create a common element. * @param description * @param license * @param author * @param version * @param authorContact * @param maintainer * @param maintainerContact * @param catchesOrLandings * @param databaseSources * @param sourceOfInformation * @param dataOwner * @param type * @param shortTitle * @param uuid * @param traceabilityFlag * @param extras * @param status * @param productType */ public Common(String description, String license, String author, Long version, String authorContact, String maintainer, String maintainerContact, List> databaseSources, List> sourceOfInformation, String dataOwner, String shortTitle, String uuid, boolean traceabilityFlag, Map> extras, Status status, String productType) { super(); this.description = description; this.license = license; this.author = author; this.version = version; this.authorContact = authorContact; this.maintainer = maintainer; this.maintainerContact = maintainerContact; this.databaseSources = databaseSources; this.sourceOfInformation = sourceOfInformation; this.dataOwner = dataOwner; this.shortTitle = shortTitle; this.uuid = uuid; this.traceabilityFlag = traceabilityFlag; this.extras = extras; this.status = status; this.productType = productType; } public String getProductType() { return productType; } public void setProductType(String productType) { this.productType = productType; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public String getLicense() { return license; } public void setLicense(String license) { this.license = license; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } public Long getVersion() { return version; } public void setVersion(Long version) { this.version = version; } public String getAuthorContact() { return authorContact; } public void setAuthorContact(String authorContact) { this.authorContact = authorContact; } public String getMaintainer() { return maintainer; } public void setMaintainer(String maintainer) { this.maintainer = maintainer; } public String getMaintainerContact() { return maintainerContact; } public void setMaintainerContact(String maintainerContact) { this.maintainerContact = maintainerContact; } public List> getDatabaseSources() { return databaseSources; } public void setDatabaseSources(List> databaseSources) { this.databaseSources = databaseSources; } public List> getSourceOfInformation() { return sourceOfInformation; } public void setSourceOfInformation(List> sourceOfInformation) { this.sourceOfInformation = sourceOfInformation; } public String getDataOwner() { return dataOwner; } public void setDataOwner(String dataOwner) { this.dataOwner = dataOwner; } public void setExtras(Map> extras) { this.extras = extras; } public Map> getExtras() { return extras; } public String getShortTitle() { return shortTitle; } public void setShortTitle(String shortTitle) { this.shortTitle = shortTitle; } public String getUuid() { return uuid; } public void setUuid(String uuid) { this.uuid = uuid; } public boolean isTraceabilityFlag() { return traceabilityFlag; } public void setTraceabilityFlag(boolean traceabilityFlag) { this.traceabilityFlag = traceabilityFlag; } public Status getStatus() { return status; } public void setStatus(Status status) { this.status = status; } @Override public String toString() { return "Common [description=" + description + ", license=" + license + ", author=" + author + ", version=" + version + ", authorContact=" + authorContact + ", maintainer=" + maintainer + ", maintainerContact=" + maintainerContact + ", dataOwner=" + dataOwner + ", databaseSources=" + databaseSources + ", sourceOfInformation=" + sourceOfInformation + ", shortTitle=" + shortTitle + ", uuid=" + uuid + ", traceabilityFlag=" + traceabilityFlag + ", extras=" + extras + ", status=" + status + ", productType=" + productType + "]"; } }