OriginDestinationLocationInfo
출발지-도착지 위치 정보. 단일 여정 구간 표현.
클래스 정의
data class OriginDestinationLocationInfo(
val origin: LocationInfo,
val destination: LocationInfo,
val date: LocalDate,
)필드
| 필드 | 타입 | 설명 |
|---|---|---|
origin | LocationInfo | 출발지 정보 |
destination | LocationInfo | 도착지 정보 |
date | LocalDate | 출발일 |
계산 프로퍼티
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
공통 필드
| 필드 | 타입 | 설명 |
|---|---|---|
type | LocationType | CITY 또는 AIRPORT |
iata | String | IATA 코드 |
airportIatas | Set<String> | 공항 IATA 목록 |
cityIata | String | 도시 IATA 코드 |
countryCode | String | 국가 코드 |
zoneId | ZoneId | 타임존 |
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 국가 코드로 판별
- 제한 국가: 시리아, 이란, 우크라이나, 쿠바