/* * Copyright (C) 2021 Anton Romanov - All Rights Reserved * You may use, distribute and modify this code, please write to: romanov73@gmail.com. * */ package ru.ulstu.controller; import io.swagger.annotations.ApiOperation; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import ru.ulstu.configuration.ApiConfiguration; import ru.ulstu.datamodel.ForecastParams; import ru.ulstu.datamodel.ModelingResult; import ru.ulstu.datamodel.exception.ModelingException; import ru.ulstu.datamodel.ts.TimeSeries; import ru.ulstu.service.MethodParamBruteForce; import ru.ulstu.service.TimeSeriesService; import java.lang.reflect.InvocationTargetException; import java.util.concurrent.ExecutionException; @RestController @RequestMapping(ApiConfiguration.API_1_0) public class TimeSeriesController { private final TimeSeriesService timeSeriesService; private final MethodParamBruteForce methodParamBruteForce; public TimeSeriesController(TimeSeriesService timeSeriesService, MethodParamBruteForce methodParamBruteForce) { this.timeSeriesService = timeSeriesService; this.methodParamBruteForce = methodParamBruteForce; } @PostMapping("getForecast") @ApiOperation("Получить прогноз временного ряда") public ResponseEntity getForecastTimeSeries(@RequestBody ForecastParams forecastParams) throws ExecutionException, InterruptedException, InvocationTargetException, NoSuchMethodException, InstantiationException, IllegalAccessException, ModelingException { return new ResponseEntity<>(timeSeriesService.getForecast(forecastParams.getOriginalTimeSeries(), forecastParams.getCountForecast()), HttpStatus.OK); } @PostMapping("getSmoothed") @ApiOperation("Получить сглаженный временной ряд") public ResponseEntity getSmoothedTimeSeries(@RequestBody TimeSeries timeSeries) throws ExecutionException, InterruptedException, InvocationTargetException, NoSuchMethodException, InstantiationException, IllegalAccessException { return new ResponseEntity<>(methodParamBruteForce.getSmoothedTimeSeries(timeSeries), HttpStatus.OK); } }