package fr.uge.timeseries.q0;

import java.time.Duration;
import java.time.Instant;
import java.util.OptionalLong;

public class Application {
    public static void main(String[] args) {
        // Define the starting point of the time series
        Instant start = Instant.now();

        // Create a TimeSeries with 6 points
        TimeSeries timeSeriesSmall = TimeSeries.fromWeb("Small series",start, 6);

        Instant queryTime = start.plus(Duration.ofMinutes(5).plusSeconds(30)); // Halfway between two points
        OptionalLong valueAtQuery = timeSeriesSmall.valueAt(queryTime);

        System.out.println("TimeSeries "+timeSeriesSmall.name()+" contains data at times "+ timeSeriesSmall.instants());
        if (valueAtQuery.isPresent()) {
            System.out.println("\nValue closest to " + queryTime + ": " + valueAtQuery.getAsLong());
        } else {
            System.out.println("\nNo value found for the query time.");
        }

        // Create a TimeSeries with 6 points
        TimeSeries timeSeriesLarge = TimeSeries.fromWeb("Large series",start, 20);

        queryTime = start.plus(Duration.ofMinutes(5).plusSeconds(30)); // Halfway between two points
        valueAtQuery = timeSeriesLarge.valueAt(queryTime);

        if (valueAtQuery.isPresent()) {
            System.out.println("\nValue closest to " + queryTime + ": " + valueAtQuery.getAsLong());
        } else {
            System.out.println("\nNo value found for the query time.");
        }
    }
}
