package org.fao.fenix.commons.msd.dto.full;

import com.fasterxml.jackson.annotation.JsonProperty;
import org.fao.fenix.commons.annotations.Description;
import org.fao.fenix.commons.annotations.Label;
import org.fao.fenix.commons.msd.dto.JSONEntity;
import org.fao.fenix.commons.msd.dto.type.RepresentationType;

import javax.persistence.Embedded;
import java.io.Serializable;
import java.util.Collection;
import java.util.Map;

public class MeContent extends JSONEntity implements Serializable {

    @JsonProperty
    @Label(en="")
    @Description(en= "")
    private RepresentationType resourceRepresentationType;

    @JsonProperty
    @Label(en="")
    @Description(en= "")
    private Collection<String> keywords;

    @JsonProperty
    @Label(en="")
    @Description(en= "")
    private Map<String, String> description;

    @JsonProperty
    @Label(en="")
    @Description(en= "")
    private Map<String, String> statisticalConceptsDefinitions;

    @JsonProperty
    @Label(en="")
    @Description(en= "")
    private SeReferencePopulation seReferencePopulation;

    @JsonProperty
    @Label(en="")
    @Description(en= "")
    private SeCoverage seCoverage;

    @JsonProperty
    @Label(en="")
    @Description(en= "")
    private SeCodeList seCodeList;


    public RepresentationType getResourceRepresentationType() {
        return resourceRepresentationType;
    }

    public void setResourceRepresentationType(RepresentationType resourceRepresentationType) {
        this.resourceRepresentationType = resourceRepresentationType;
    }

    public Collection<String> getKeywords() {
        return keywords;
    }

    public void setKeywords(Collection<String> keywords) {
        this.keywords = keywords;
    }

    public Map<String, String> getStatisticalConceptsDefinitions() {
        return statisticalConceptsDefinitions;
    }

    public void setStatisticalConceptsDefinitions(Map<String, String> statisticalConceptsDefinitions) {
        this.statisticalConceptsDefinitions = statisticalConceptsDefinitions;
    }

    public Map<String, String> getDescription() {
        return description;
    }

    public void setDescription(Map<String, String> description) {
        this.description = description;
    }

    public SeReferencePopulation getSeReferencePopulation() {
        return seReferencePopulation;
    }
    @Embedded
    public void setSeReferencePopulation(SeReferencePopulation seReferencePopulation) {
        this.seReferencePopulation = seReferencePopulation;
    }

    public SeCoverage getSeCoverage() {
        return seCoverage;
    }
    @Embedded
    public void setSeCoverage(SeCoverage seCoverage) {
        this.seCoverage = seCoverage;
    }

    public SeCodeList getSeCodeList() {
        return seCodeList;
    }
    @Embedded
    public void setSeCodeList(SeCodeList seCodeList) {
        this.seCodeList = seCodeList;
    }
}

@@ -516,32 +516,48 @@
 %0A    @Label(en=%22
+Type of resource
 %22)%0A    @Descript
@@ -557,39 +557,332 @@
 escription(en= %22
-%22)%0A    
+Typology of the resource the metadata refers to. This metadata element determines whether certain meta-data entities are, or are not applicable. For example, the metadata entities 'SpatialRepresentation' and 'ReferenceSystem' are only available for geospatial resource types (e.g. raster; vector).%22)%0A
 private Represen
@@ -946,32 +946,40 @@
 %0A    @Label(en=%22
+Keywords
 %22)%0A    @Descript
@@ -979,32 +979,117 @@
 escription(en= %22
+Commonly used word(s), formalized word(s) or phrase(s) used to describe the resource.
 %22)%0A    private C
@@ -1142,32 +1142,43 @@
 %0A    @Label(en=%22
+Description
 %22)%0A    @Descript
@@ -1190,115 +1190,683 @@
 n= %22
-%22)%0A    private Map%3CString, String%3E description;%0A%0A    @JsonProperty%0A    @Label(en=%22%22)%0A    @Description(en= %22
+Overview of the main characteristics of the resource and summary of the information contained in the resource, in an easily understandable manner, for technical and non-technical users.%22)%0A    private Map%3CString, String%3E description;%0A%0A    @JsonProperty%0A    @Label(en=%22Statistical concepts / definitions%22)%0A    @Description(en= %22Definitions of the statistical concepts under measure (i.e. the statistical domain) and the main variables provided. The considered types of variables (e.g. raw figures, annual growth rates, index, ow or stock data, ...) should be de%0Cned and described in accordance with internationally accepted statistical standards, guidelines, or good practices.
 %22)%0A 
@@ -1954,32 +1954,52 @@
 %0A    @Label(en=%22
+Reference population
 %22)%0A    @Descript
@@ -1999,32 +1999,100 @@
 escription(en= %22
+Information about the statistical population the resource refers to.
 %22)%0A    private S
@@ -2161,32 +2161,40 @@
 %0A    @Label(en=%22
+Coverage
 %22)%0A    @Descript
@@ -2194,32 +2194,264 @@
 escription(en= %22
+Size and extent of the resource. The term 'coverage' encompasses the descriptions of key dimensions delimiting the data, e.g. geographical, institutional, product, economic sector,etc., as well as relevant exceptions and exclusions.
 %22)%0A    private S
@@ -2506,16 +2506,24 @@
 bel(en=%22
+Codelist
 %22)%0A    @
@@ -2539,16 +2539,117 @@
 on(en= %22
+this section allows to report information specifically addressed to resources of the kind 'codelist'.
 %22)%0A    p

Update MeContent.java