package incheon.ags.mrb.style.web.dto;

import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;

/**
 * SLD 요청 DTO
 * MapPrime v2.0 SLD API 요청용
 */
@lombok.Getter @lombok.Setter
public class SldRequestDTO {

    /** 스타일 이름 (PUT 요청시에는 선택사항) */
    @Size(max = 100, message = "스타일 이름은 100자를 초과할 수 없습니다")
    private String name;

    /** SLD XML 내용 */
    @NotBlank(message = "SLD 내용은 필수입니다")
    private String xml;

    /** 워크스페이스 이름 (선택사항) */
    @Size(max = 50, message = "워크스페이스 이름은 50자를 초과할 수 없습니다")
    private String workspace;

    /** 스타일 설명 (선택사항) */
    @Size(max = 1000, message = "스타일 설명은 1000자를 초과할 수 없습니다")
    private String description;

    /** 덮어쓰기 여부 (PUT 요청시 사용) */
    private Boolean overwrite;

    /** 검증 여부 */
    private Boolean validate;

    /**
     * SLD XML 내용 유효성 간단 검증
     * @return XML 형태로 보이면 true
     */
    public boolean isValidXml() {
        if (xml == null || xml.trim().isEmpty()) {
            return false;
        }

        String trimmedXml = xml.trim();
        return trimmedXml.startsWith("<") && trimmedXml.endsWith(">");
    }

    /**
     * 워크스페이스가 지정되지 않은 경우 기본값 설정
     * @param defaultWorkspace 기본 워크스페이스 이름
     */
    public void setDefaultWorkspaceIfEmpty(String defaultWorkspace) {
        if (workspace == null || workspace.trim().isEmpty()) {
            this.workspace = defaultWorkspace;
        }
    }
}
