time-series-smoothing/src/main/java/ru/ulstu/controller/TimeSeriesController.java

66 lines
3.2 KiB
Java
Raw Normal View History

2021-05-28 12:22:14 +04:00
/*
2021-06-01 14:05:19 +04:00
* Copyright (C) 2021 Anton Romanov - All Rights Reserved
* You may use, distribute and modify this code, please write to: romanov73@gmail.com.
2021-05-28 12:22:14 +04:00
*
*/
2021-06-01 14:05:19 +04:00
package ru.ulstu.controller;
2018-02-22 22:47:45 +04:00
2020-09-12 13:11:09 +04:00
import io.swagger.annotations.ApiOperation;
2021-10-14 10:15:10 +04:00
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
2018-02-22 22:47:45 +04:00
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
2020-09-12 13:11:09 +04:00
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;
2021-10-14 10:15:10 +04:00
import ru.ulstu.HttpUtils;
2020-11-07 14:13:56 +04:00
import ru.ulstu.configuration.ApiConfiguration;
2021-06-01 14:05:19 +04:00
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;
2018-02-22 22:47:45 +04:00
2021-10-14 10:15:10 +04:00
import javax.servlet.http.HttpServletRequest;
2021-06-23 14:42:02 +04:00
import java.lang.reflect.InvocationTargetException;
import java.util.concurrent.ExecutionException;
2018-02-22 22:47:45 +04:00
@RestController
@RequestMapping(ApiConfiguration.API_1_0)
public class TimeSeriesController {
2021-10-14 10:15:10 +04:00
private final static Logger LOGGER = LoggerFactory.getLogger(TimeSeriesController.class);
2018-02-22 22:47:45 +04:00
private final TimeSeriesService timeSeriesService;
2021-05-28 12:22:14 +04:00
private final MethodParamBruteForce methodParamBruteForce;
2018-02-22 22:47:45 +04:00
2021-05-28 12:22:14 +04:00
public TimeSeriesController(TimeSeriesService timeSeriesService,
MethodParamBruteForce methodParamBruteForce) {
2018-02-22 22:47:45 +04:00
this.timeSeriesService = timeSeriesService;
2021-05-28 12:22:14 +04:00
this.methodParamBruteForce = methodParamBruteForce;
2018-02-22 22:47:45 +04:00
}
2020-09-12 13:11:09 +04:00
@PostMapping("getForecast")
@ApiOperation("Получить прогноз временного ряда")
2021-10-14 10:15:10 +04:00
public ResponseEntity<ModelingResult> getForecastTimeSeries(@RequestBody ForecastParams forecastParams, HttpServletRequest request) throws ExecutionException, InterruptedException, InvocationTargetException, NoSuchMethodException, InstantiationException, IllegalAccessException, ModelingException {
LOGGER.info("User ip: " + HttpUtils.getUserIp(request));
LOGGER.info("Forecast: " + forecastParams);
ResponseEntity<ModelingResult> result = new ResponseEntity<>(timeSeriesService.getForecast(forecastParams.getOriginalTimeSeries(),
2020-09-12 14:54:46 +04:00
forecastParams.getCountForecast()), HttpStatus.OK);
2021-10-14 10:15:10 +04:00
LOGGER.info("Forecast result complete");
return result;
2018-02-24 23:00:30 +04:00
}
2021-05-28 12:22:14 +04:00
@PostMapping("getSmoothed")
@ApiOperation("Получить сглаженный временной ряд")
2021-10-14 10:15:10 +04:00
public ResponseEntity<ModelingResult> getSmoothedTimeSeries(@RequestBody TimeSeries timeSeries, HttpServletRequest request) throws ExecutionException, InterruptedException, InvocationTargetException, NoSuchMethodException, InstantiationException, IllegalAccessException {
LOGGER.info("User ip: " + HttpUtils.getUserIp(request));
LOGGER.info("Time series for smoothing: " + timeSeries);
ResponseEntity<ModelingResult> result = new ResponseEntity<>(methodParamBruteForce.getSmoothedTimeSeries(timeSeries), HttpStatus.OK);
LOGGER.info("Smoothing complete");
return result;
2021-05-28 12:22:14 +04:00
}
2018-02-22 22:47:45 +04:00
}