package incheon.product.geoview2d.layer.vo;

import java.io.Serial;
import java.util.Map;

import com.fasterxml.jackson.annotation.JsonIgnore;
import incheon.com.cmm.ComDefaultVO;
import lombok.Getter;
import lombok.Setter;
import lombok.NoArgsConstructor;

/**
 * 통합 피처 데이터 VO.
 * Added/Modified 피처를 모두 처리할 수 있는 통합 구조.
 */
@Getter
@Setter
@NoArgsConstructor
public class FeatureVO extends ComDefaultVO {

    @Serial
    private static final long serialVersionUID = 1L;

    private Integer id;
    private Object geometry;
    private Map<String, Object> properties;

    private OriginalInfo original;
    private ModifiedInfo modified;

    @JsonIgnore
    private String geometryString;

    @Getter
    @Setter
    @NoArgsConstructor
    public static class OriginalInfo {
        private Object geometry;
        private Map<String, Object> properties;
    }

    @Getter
    @Setter
    @NoArgsConstructor
    public static class ModifiedInfo {
        private Object geometry;
        private Map<String, Object> properties;
    }
}
