QuoteSummaryResponse.java

package com.tdmconsult.ete.services.yahoo.dto;

import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.function.Predicate;
import lombok.Data;
import org.jspecify.annotations.Nullable;

@Data
public class QuoteSummaryResponse {

    @Nullable
    private QuoteSummary quoteSummary;

    public Optional<SummaryDetail> getSummaryDetail() {
        return Optional.ofNullable(quoteSummary)
                .map(QuoteSummary::getResult)
                .filter(Predicate.not(List::isEmpty))
                .map(List::getFirst)
                .map(Result::getSummaryDetail);
    }

    public Optional<CalendarEvents> getCalendarEvents() {
        return Optional.ofNullable(quoteSummary)
                .map(QuoteSummary::getResult)
                .filter(Predicate.not(List::isEmpty))
                .map(List::getFirst)
                .map(Result::getCalendarEvents);
    }

    @Data
    public static class QuoteSummary {
        private List<Result> result = new ArrayList<>();
    }

    @Data
    public static class Result {
        @Nullable
        private CalendarEvents calendarEvents;
        @Nullable
        private SummaryDetail summaryDetail;
    }
}