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 javax.persistence.Embedded;
import java.io.Serializable;
import java.util.Date;
import java.util.Map;

public class SeDataCompilation extends JSONEntity implements Serializable {

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

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

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

    @JsonProperty
    @Label(en="")
    @Description(en= "")
    private String aggregationFormula;

    @JsonProperty
    @Label(en="")
    @Description(en= "")
    private OjCodeList dataAdjustment;

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

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

    @JsonProperty
    @Label(en="")
    @Description(en= "")
    private Date basePeriod;


    public Map<String, String> getMissingData() {
        return missingData;
    }

    public void setMissingData(Map<String, String> missingData) {
        this.missingData = missingData;
    }

    public Map<String, String> getWeights() {
        return weights;
    }

    public void setWeights(Map<String, String> weights) {
        this.weights = weights;
    }

    public Map<String, String> getAggregationProcessing() {
        return aggregationProcessing;
    }

    public void setAggregationProcessing(Map<String, String> aggregationProcessing) {
        this.aggregationProcessing = aggregationProcessing;
    }

    public String getAggregationFormula() {
        return aggregationFormula;
    }

    public void setAggregationFormula(String aggregationFormula) {
        this.aggregationFormula = aggregationFormula;
    }

    public OjCodeList getDataAdjustment() {
        return dataAdjustment;
    }
    @Embedded
    public void setDataAdjustment(OjCodeList dataAdjustment) {
        this.dataAdjustment = dataAdjustment;
    }

    public Map<String, String> getDataAdjustmentDetails() {
        return dataAdjustmentDetails;
    }

    public void setDataAdjustmentDetails(Map<String, String> dataAdjustmentDetails) {
        this.dataAdjustmentDetails = dataAdjustmentDetails;
    }

    public Map<String, String> getIndexType() {
        return indexType;
    }

    public void setIndexType(Map<String, String> indexType) {
        this.indexType = indexType;
    }

    public Date getBasePeriod() {
        return basePeriod;
    }

    public void setBasePeriod(Date basePeriod) {
        this.basePeriod = basePeriod;
    }
}

@@ -456,32 +456,44 @@
 %0A    @Label(en=%22
+Missing data
 %22)%0A    @Descript
@@ -493,32 +493,212 @@
 escription(en= %22
+It describe under which circumstance missing data are estimated or imputed and when the cells are left empty. It also describe methodologies used to estimate/impute missing values.
 %22)%0A    private M
@@ -755,32 +755,39 @@
 %0A    @Label(en=%22
+Weights
 %22)%0A    @Descript
@@ -787,32 +787,276 @@
 escription(en= %22
+Description of weights system (if any) used in order to produce accurate statistical results. This field reports the criteria for using weights in analysis of collection, the formulas and coefficients developed and how they are applied to data.
 %22)%0A    private M
@@ -1109,32 +1109,54 @@
 %0A    @Label(en=%22
+Process of aggregation
 %22)%0A    @Descript
@@ -1156,32 +1156,89 @@
 escription(en= %22
+Information about the methodology used to aggregate data.
 %22)%0A    private M
@@ -1305,32 +1305,51 @@
 %0A    @Label(en=%22
+Aggregation formula
 %22)%0A    @Descript
@@ -1349,32 +1349,63 @@
 escription(en= %22
+Formula used to aggregate data.
 %22)%0A    private S
@@ -1456,32 +1456,53 @@
 %0A    @Label(en=%22
+Process of adjustment
 %22)%0A    @Descript
@@ -1502,32 +1502,78 @@
 escription(en= %22
+Type of adjustment used represented by a code.
 %22)%0A    private O
@@ -1636,33 +1636,278 @@
 en=%22
-%22)%0A    @Description(en= %22
+Details on process of adjustment%22)%0A    @Description(en= %22Set of procedures employed to modify statistical data to enable it to be conform with national or international standards (such as seasonal adjustment methods, time series decomposition, or other similar methods).
 %22)%0A 
@@ -1986,32 +1986,45 @@
 %0A    @Label(en=%22
+Type of index
 %22)%0A    @Descript
@@ -2024,32 +2024,96 @@
 escription(en= %22
+Type of index number used in the statistical production process.
 %22)%0A    private M
@@ -2176,16 +2176,27 @@
 bel(en=%22
+Base period
 %22)%0A    @
@@ -2212,16 +2212,144 @@
 on(en= %22
+Period of time used as a base of an index number or to which a time series refers (e.g. base year 2000 for certain annual data).
 %22)%0A    p

Update SeDataCompilation.java