SummaryDetail.java

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

import com.fasterxml.jackson.databind.JsonNode;
import java.math.BigDecimal;
import java.util.Optional;
import lombok.Data;
import org.jspecify.annotations.Nullable;

@Data
@SuppressWarnings("checkstyle:AbbreviationAsWordInName")
public class SummaryDetail {

    public Optional<BigDecimal> getPreviousClose() {
        return Optional.ofNullable(previousClose)
                    .map(n -> n.get("raw"))
                    .filter(JsonNode::isNumber)
                    .map(JsonNode::decimalValue);
    }

    @Nullable
    private String currency;

    // "previousClose":{"raw":76.14,"fmt":"76.14"},
    @Nullable
    private JsonNode previousClose;
    // "regularMarketPreviousClose":{"raw":76.14,"fmt":"76.14"},
    @Nullable
    private JsonNode regularMarketPreviousClose;

    // "open":{"raw":75.4,"fmt":"75.40"},
    @Nullable
    private JsonNode open;
    // "regularMarketOpen":{"raw":75.4,"fmt":"75.40"},
    @Nullable
    private JsonNode regularMarketOpen;

    // "dayLow":{"raw":74.2,"fmt":"74.20"},
    @Nullable
    private JsonNode dayLow;
    // "regularMarketDayLow":{"raw":74.2,"fmt":"74.20"},
    @Nullable
    private JsonNode regularMarketDayLow;

    // "dayHigh":{"raw":75.86,"fmt":"75.86"},
    @Nullable
    private JsonNode dayHigh;
    // "regularMarketDayHigh":{"raw":75.86,"fmt":"75.86"},
    @Nullable
    private JsonNode regularMarketDayHigh;

    // "dividendRate":{"raw":5.26,"fmt":"5.26"},
    @Nullable
    private JsonNode dividendRate;
    // "dividendYield":{"raw":0.0691,"fmt":"6.91%"},
    @Nullable
    private JsonNode dividendYield;
    // "exDividendDate":{"raw":1781827200,"fmt":"2026-06-19"},
    @Nullable
    private JsonNode exDividendDate;
    // "payoutRatio":{"raw":0.5043,"fmt":"50.43%"},
    @Nullable
    private JsonNode payoutRatio;

    // "fiveYearAvgDividendYield":{"raw":6.52,"fmt":"6.52"},
    @Nullable
    private JsonNode fiveYearAvgDividendYield;
    // "beta":{"raw":0.981,"fmt":"0.98"},
    @Nullable
    private JsonNode beta;

    // "trailingPE":{"raw":7.158198,"fmt":"7.16"},
    @Nullable
    private JsonNode trailingPE;
    // "forwardPE":{"raw":3.1877282,"fmt":"3.19"},
    @Nullable
    private JsonNode forwardPE;

    //          {"summaryDetail":{
    //              "maxAge":1,
    //              "priceHint":{"raw":2,"fmt":"2","longFmt":"2"},
    //              "previousClose":{"raw":76.14,"fmt":"76.14"},
    //              "open":{"raw":75.4,"fmt":"75.40"},
    //              "dayLow":{"raw":74.2,"fmt":"74.20"},
    //              "dayHigh":{"raw":75.86,"fmt":"75.86"},
    //              "regularMarketPreviousClose":{"raw":76.14,"fmt":"76.14"},
    //              "regularMarketOpen":{"raw":75.4,"fmt":"75.40"},
    //              "regularMarketDayLow":{"raw":74.2,"fmt":"74.20"},
    //              "regularMarketDayHigh":{"raw":75.86,"fmt":"75.86"},
    //              "dividendRate":{"raw":5.26,"fmt":"5.26"},
    //              "dividendYield":{"raw":0.0691,"fmt":"6.91%"},
    //              "exDividendDate":{"raw":1781827200,"fmt":"2026-06-19"},
    //              "payoutRatio":{"raw":0.5043,"fmt":"50.43%"},
    //              "fiveYearAvgDividendYield":{"raw":6.52,"fmt":"6.52"},
    //              "beta":{"raw":0.981,"fmt":"0.98"},
    //              "trailingPE":{"raw":7.158198,"fmt":"7.16"},
    //              "forwardPE":{"raw":3.1877282,"fmt":"3.19"},
    //              "volume":{"raw":727461,"fmt":"727.46k","longFmt":"727,461"},
    //              "regularMarketVolume":{"raw":727461,"fmt":"727.46k","longFmt":"727,461"},
    //              "averageVolume":{"raw":1032453,"fmt":"1.03M","longFmt":"1,032,453"},
    //              "averageVolume10days":{"raw":1007279,"fmt":"1.01M","longFmt":"1,007,279"},
    //              "averageDailyVolume10Day":{"raw":1007279,"fmt":"1.01M","longFmt":"1,007,279"},
    //              "bid":{"raw":74.82,"fmt":"74.82"},
    //              "ask":{"raw":74.66,"fmt":"74.66"},
    //              "bidSize":{"raw":207000,"fmt":"207k","longFmt":"207,000"},
    //              "askSize":{"raw":63200,"fmt":"63.2k","longFmt":"63,200"},
    //              "marketCap":{"raw":37426704384,"fmt":"37.43B","longFmt":"37,426,704,384"},
    //              "nonDilutedMarketCap":{"raw":38407644077,"fmt":"38.41B","longFmt":"38,407,644,077"},
    //              "yield":{},
    //              "ytdReturn":{},
    //              "qtdReturn":{},
    //              "totalAssets":{},
    //              "expireDate":{},
    //              "strikePrice":{},
    //              "openInterest":{},
    //              "fiftyTwoWeekLow":{"raw":69.2,"fmt":"69.20"},
    //              "fiftyTwoWeekHigh":{"raw":109.15,"fmt":"109.15"},
    //              "allTimeHigh":{"raw":262.45,"fmt":"262.45"},
    //              "allTimeLow":{"raw":20.476831,"fmt":"20.48"},
    //              "priceToSalesTrailing12Months":{"raw":0.11635811,"fmt":"0.12"},
    //              "fiftyDayAverage":{"raw":79.8948,"fmt":"79.89"},
    //              "twoHundredDayAverage":{"raw":91.91395,"fmt":"91.91"},
    //              "trailingAnnualDividendRate":{"raw":5.26,"fmt":"5.26"},
    //              "trailingAnnualDividendYield":{"raw":0.06908327,"fmt":"6.91%"},
    //              "navPrice":{},
    //              "currency":"EUR",
    //              "fromCurrency":null,
    //              "toCurrency":null,
    //              "lastMarket":null,
    //              "coinMarketCapLink":null,
    //              "volume24Hr":{},
    //              "volumeAllCurrencies":{},
    //              "circulatingSupply":{},
    //              "algorithm":null,
    //              "maxSupply":{},
    //              "totalSupply":{},
    //              "startDate":{},
    //              "tradeable":false,
    //              "fullyDilutedValue":{},
    //              "volume24HrMarketCapPercent":{}}

}