package incheon.ags.mrb.analysis.vo.request;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;

@Getter
@Setter
@Schema(description = "주변 요약 요청")
public class SummarizeNearbyRequestDTO extends AbstractAnalysisRequestDTO{

    @Schema(description = "주변 요약 범위를 지정하는 공간 정보")
    @NotNull
    String geometry;

    @Schema(description = "버퍼 크기(미터)")
    Integer bufferSize;

    @Schema(description = "경계 내 교차한 입력 피처들의 길이 또는 면적 정보를 요약값에 포함할지 여부")
    Boolean includeGeometrySummary = false;

    @Schema(description = "통계 필드 목록 (쉼표로 구분된 필드명 문자열)")
    @NotEmpty
    String statisticsFields;

    @Override
    protected Object jsonPart() {
        return new Object() {
            public final String geometry = SummarizeNearbyRequestDTO.this.geometry;
            public final Integer bufferSize = SummarizeNearbyRequestDTO.this.bufferSize;
            public final Boolean includeGeometrySummary = SummarizeNearbyRequestDTO.this.includeGeometrySummary;
            public final String statisticsFields = SummarizeNearbyRequestDTO.this.statisticsFields;
        };
    }
}
