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.Collection;
import java.util.Date;
import java.util.Map;

public class MeReferenceSystem extends JSONEntity implements Serializable {

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

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

    @JsonProperty
    @Label(en="")
    @Description(en= "")
    private OjResponsibleParty referenceSystemAuthority;

    @JsonProperty
    @Label(en="")
    @Description(en= "")
    private SeProjection seProjection;

    @JsonProperty
    @Label(en="")
    @Description(en= "")
    private SeEllipsoid seEllipsoid;

    @JsonProperty
    @Label(en="")
    @Description(en= "")
    private SeDatum seDatum;


    public String getReferenceSystemIdentifier() {
        return referenceSystemIdentifier;
    }

    public void setReferenceSystemIdentifier(String referenceSystemIdentifier) {
        this.referenceSystemIdentifier = referenceSystemIdentifier;
    }

    public Map<String, String> getReferenceSystemName() {
        return referenceSystemName;
    }

    public void setReferenceSystemName(Map<String, String> referenceSystemName) {
        this.referenceSystemName = referenceSystemName;
    }

    public OjResponsibleParty getReferenceSystemAuthority() {
        return referenceSystemAuthority;
    }
    @Embedded
    public void setReferenceSystemAuthority(OjResponsibleParty referenceSystemAuthority) {
        this.referenceSystemAuthority = referenceSystemAuthority;
    }

    public SeProjection getSeProjection() {
        return seProjection;
    }
    @Embedded
    public void setSeProjection(SeProjection seProjection) {
        this.seProjection = seProjection;
    }

    public SeEllipsoid getSeEllipsoid() {
        return seEllipsoid;
    }
    @Embedded
    public void setSeEllipsoid(SeEllipsoid seEllipsoid) {
        this.seEllipsoid = seEllipsoid;
    }

    public SeDatum getSeDatum() {
        return seDatum;
    }
    @Embedded
    public void setSeDatum(SeDatum seDatum) {
        this.seDatum = seDatum;
    }
}

@@ -497,256 +497,677 @@
 en=%22
-%22)%0A    @Description(en= %22%22)%0A    private String referenceSystemIdentifier;%0A%0A    @JsonProperty%0A    @Label(en=%22%22)%0A    @Description(en= %22%22)%0A    private Map%3CString, String%3E referenceSystemName;%0A%0A    @JsonProperty%0A    @Label(en=%22%22)%0A    @Description(en= %22
+Identifier of reference system%22)%0A    @Description(en= %22Identifier of the reference system. One of the most common standards for reference systems is the EPSG Geodetic Parameter Registry, created by the European Petroleum Survey Group.%22)%0A    private String referenceSystemIdentifier;%0A%0A    @JsonProperty%0A    @Label(en=%22Extented name of reference system%22)%0A    @Description(en= %22Alias or the name of the reference system.%22)%0A    private Map%3CString, String%3E referenceSystemName;%0A%0A    @JsonProperty%0A    @Label(en=%22Reference system authority%22)%0A    @Description(en= %22It is an element of the type ResponsibleParty providing details on the authority linked to the referece system.
 %22)%0A 
@@ -1248,32 +1248,42 @@
 %0A    @Label(en=%22
+Projection
 %22)%0A    @Descript
@@ -1283,32 +1283,139 @@
 escription(en= %22
+This section provides the identi%0Cers of the projection of the considered Coordinate Reference System (CRS).
 %22)%0A    private S
@@ -1466,32 +1466,41 @@
 %0A    @Label(en=%22
+Ellipsoid
 %22)%0A    @Descript
@@ -1500,32 +1500,139 @@
 escription(en= %22
+This section provides the identifiers of the ellipsoid of the considered Coordinate Reference System (CRS).
 %22)%0A    private S
@@ -1689,16 +1689,21 @@
 bel(en=%22
+Datum
 %22)%0A    @
@@ -1719,16 +1719,119 @@
 on(en= %22
+This section provides the identifiers of the datum of the considered Coordinate Reference System (CRS).
 %22)%0A    p

Update MeReferenceSystem.java