package org.gcube.data_catalogue.grsf_publish_ws.json.input.record; import java.util.List; import javax.validation.Valid; 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.custom_annotations.TimeSeries; import org.gcube.data_catalogue.grsf_publish_ws.json.input.utils.RefersToBean; import org.gcube.data_catalogue.grsf_publish_ws.json.input.utils.Resource; import org.gcube.data_catalogue.grsf_publish_ws.json.input.utils.SimilarRecordBean; import org.gcube.data_catalogue.grsf_publish_ws.json.input.utils.TimeSeriesBean; import org.gcube.data_catalogue.grsf_publish_ws.utils.CommonServiceUtils; import org.gcube.data_catalogue.grsf_publish_ws.utils.groups.Sources; 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 records must contain. * @author Costantino Perciante at ISTI-CNR (costantino.perciante@isti.cnr.it) */ @JsonIgnoreProperties(value = {"grsf_type", "source"}) public class Common extends Base{ public static final String GRSF_DATABASE_SOURCE = "Database Source"; // it is added in case of GRSF record @JsonProperty("data_owner") @CustomField(key="Data owner") @Tag private List dataOwner; @JsonProperty("database_sources") @CkanResource @Valid private List> databaseSources; @JsonProperty("source_of_information") @CkanResource @Valid private List> sourceOfInformation; @JsonProperty("refers_to") @Valid private List refersTo; @JsonProperty("short_name") @CustomField(key="Short Name") private String shortName; @JsonProperty("traceability_flag") @CustomField(key="Traceability Flag") @Group(condition="true", groupNameOverValue="traceability-flag") // record is added to group traceability-flag if Traceability Flag is true private Boolean traceabilityFlag; @JsonProperty("status_grsf_record") @CustomField(key="Status of the GRSF record") private Status status; // automatically compiled @CustomField(key=CommonServiceUtils.SYSTEM_TYPE) private String systemType; @JsonProperty("catches") @CustomField(key="Catches") @TimeSeries @Valid private List> catches; @JsonProperty("landings") @CustomField(key="Landings") @TimeSeries @Valid private List> landings; @JsonProperty("species") @CustomField(key="Species") private List species; @JsonProperty("similar_grsf_records") @CustomField(key="Similar GRSF Records") private List similarGRSFRecords; @JsonProperty("similar_source_records") @CustomField(key="Similar Source Records") private List similarSourceRecords; public Common() { super(); } /** * @param dataOwner * @param databaseSources * @param sourceOfInformation * @param refersTo * @param shortName * @param traceabilityFlag * @param status * @param grsfType * @param catches * @param landings * @param species * @param similarGRSFRecords * @param similarSourceRecords */ public Common(List dataOwner, List> databaseSources, List> sourceOfInformation, List refersTo, String shortName, Boolean traceabilityFlag, Status status, String systemType, List> catches, List> landings, List species, List similarGRSFRecords, List similarSourceRecords) { super(); this.dataOwner = dataOwner; this.databaseSources = databaseSources; this.sourceOfInformation = sourceOfInformation; this.refersTo = refersTo; this.shortName = shortName; this.traceabilityFlag = traceabilityFlag; this.status = status; this.systemType = systemType; this.catches = catches; this.landings = landings; this.species = species; this.similarGRSFRecords = similarGRSFRecords; this.similarSourceRecords = similarSourceRecords; } public String getSystemType() { return systemType; } public void setSystemType(String systemType) { this.systemType = systemType; } public Boolean getTraceabilityFlag() { return traceabilityFlag; } public List getRefersTo() { return refersTo; } public void setRefersTo(List refersTo) { this.refersTo = refersTo; } 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 getShortName() { return shortName; } public void setShortName(String shortName) { this.shortName = shortName; } 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; } public List getSpecies() { return species; } public void setSpecies(List species) { this.species = species; } public List> getCatches() { return catches; } public void setCatches(List> catches) { this.catches = catches; } public List> getLandings() { return landings; } public void setLandings(List> landings) { this.landings = landings; } public List getDataOwner() { return dataOwner; } public void setDataOwner(List dataOwner) { this.dataOwner = dataOwner; } public List getSimilarGRSFRecords() { return similarGRSFRecords; } public void setSimilarGRSFRecords(List similarGRSFRecords) { this.similarGRSFRecords = similarGRSFRecords; } public List getSimilarSourceRecords() { return similarSourceRecords; } public void setSimilarSourceRecords(List similarSourceRecords) { this.similarSourceRecords = similarSourceRecords; } /** * Clean the semantic id * @param id * @return */ public static String cleanSemanticId(String id){ if(id == null) return null; else{ String idmodified = ""; if(id != null){ String[] splitCodesValues = id.split("\\+"); for (int i = 0; i < splitCodesValues.length; i++) { String prefixAndCode = splitCodesValues[i]; String prefix = prefixAndCode.split(":")[0]; String code = prefixAndCode.split(":")[1]; idmodified += prefix.toLowerCase() + ":" + code.toUpperCase(); if(splitCodesValues.length > 1 && i < (splitCodesValues.length - 1)) idmodified += "+"; } } return idmodified; } } @Override public String toString() { return "Common [dataOwner=" + dataOwner + ", databaseSources=" + databaseSources + ", sourceOfInformation=" + sourceOfInformation + ", refersTo=" + refersTo + ", shortName=" + shortName + ", traceabilityFlag=" + traceabilityFlag + ", status=" + status + ", systemType=" + systemType + ", catches=" + catches + ", landings=" + landings + ", species=" + species + ", similarGRSFRecords=" + similarGRSFRecords + ", similarSourceRecords=" + similarSourceRecords + "]"; } }