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

import com.all4land.sa.option.buffer.BufferResolution;
import com.all4land.sa.option.buffer.EndCapStyle;
import com.all4land.sa.option.buffer.JoinStyle;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;

import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;

@Getter
@Setter
@Schema(description = "버퍼 요청")
public class BufferRequestDTO extends AbstractAnalysisRequestDTO{

    @Schema(description = "버퍼 거리")
    @Min(0)
    @NotNull
    private Double distance;

    @Schema(description = "사분면 근사 정도")
    BufferResolution resolution = BufferResolution.MEDIUM;

    @Schema(description = "버퍼 끝 스타일")
    EndCapStyle endCapStyle = EndCapStyle.ROUND;

    @Schema(description = "버퍼 조인 스타일")
    JoinStyle joinStyle = JoinStyle.ROUND;

    @Override
    protected Object jsonPart() {
        return new Object() {
            public final Double distance = BufferRequestDTO.this.distance;
            public final BufferResolution resolution = BufferRequestDTO.this.resolution;
            public final EndCapStyle endCapStyle = BufferRequestDTO.this.endCapStyle;
            public final JoinStyle joinStyle = BufferRequestDTO.this.joinStyle;
        };
    }
}
