OriginDestinationLocationInfo

출발지-도착지 위치 정보. 단일 여정 구간 표현.

클래스 정의

data class OriginDestinationLocationInfo(
    val origin: LocationInfo,
    val destination: LocationInfo,
    val date: LocalDate,
)

필드

필드타입설명
originLocationInfo출발지 정보
destinationLocationInfo도착지 정보
dateLocalDate출발일

계산 프로퍼티

locationInfoKey

val locationInfoKey: String

출발공항들-도착공항들::날짜 형식의 키.

메서드

isDomesticRoute()

fun isDomesticRoute(): Boolean

국내선 여정 여부. 출발지와 도착지 모두 한국이면 true.

isRestrictedRoute()

fun isRestrictedRoute(): Boolean

제한 국가 여정 여부 (SY, IR, UA, CU).

isSameOriginDestination()

fun isSameOriginDestination(): Boolean

출발지와 도착지가 같은지 확인.


LocationInfo (sealed class)

위치 정보 기본 클래스.

sealed class 구조

LocationInfo (sealed)
    ├─► City
    └─► Airport

공통 필드

필드타입설명
typeLocationTypeCITY 또는 AIRPORT
iataStringIATA 코드
airportIatasSet<String>공항 IATA 목록
cityIataString도시 IATA 코드
countryCodeString국가 코드
zoneIdZoneId타임존

City

data class City(
    override val iata: String,
    override val airportIatas: Set<String>,
    override val countryCode: String,
    override val zoneId: ZoneId,
) : LocationInfo(LocationType.CITY)

도시 기반 위치. 해당 도시의 모든 공항 포함.

Airport

data class Airport(
    override val iata: String,
    override val countryCode: String,
    override val zoneId: ZoneId,
    override val cityIata: String,
) : LocationInfo(LocationType.AIRPORT)

공항 기반 위치. 단일 공항만 포함.

특징

  • sealed class: City/Airport 완전성 보장
  • 국내선 체크: KR 국가 코드로 판별
  • 제한 국가: 시리아, 이란, 우크라이나, 쿠바