|
|
|
@ -8,15 +8,17 @@ package ru.ulstu.extractor.service;
|
|
|
|
|
import org.slf4j.Logger;
|
|
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
import ru.ulstu.extractor.model.BaseEntity;
|
|
|
|
|
import ru.ulstu.extractor.model.TimeSeries;
|
|
|
|
|
import ru.ulstu.extractor.model.TimeSeriesValue;
|
|
|
|
|
import ru.ulstu.extractor.repository.TimeSeriesRepository;
|
|
|
|
|
import ru.ulstu.extractor.repository.TimeSeriesValueRepository;
|
|
|
|
|
import ru.ulstu.extractor.ts.TimeSeriesDateMapper;
|
|
|
|
|
|
|
|
|
|
import javax.transaction.Transactional;
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
|
import java.util.Date;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.Map;
|
|
|
|
|
import java.util.Optional;
|
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
@ -32,15 +34,31 @@ public class TimeSeriesService {
|
|
|
|
|
this.timeSeriesValueRepository = timeSeriesValueRepository;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Сохранить список временных рядов
|
|
|
|
|
*
|
|
|
|
|
* @param timeSeriesValues
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
@Transactional
|
|
|
|
|
public List<TimeSeries> save(Map<String, List<TimeSeriesValue>> timeSeriesValues) {
|
|
|
|
|
List<TimeSeries> results = new ArrayList<>();
|
|
|
|
|
for (Map.Entry<String, List<TimeSeriesValue>> entry : timeSeriesValues.entrySet()) {
|
|
|
|
|
results.add(save(entry.getKey(), entry.getValue()));
|
|
|
|
|
}
|
|
|
|
|
return results;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Transactional
|
|
|
|
|
public TimeSeries save(String timeSeriesName, List<TimeSeriesValue> timeSeriesValues) {
|
|
|
|
|
LOG.debug("Start save {} time series with {} time series values ", timeSeriesName, timeSeriesValues.size());
|
|
|
|
|
final TimeSeries timeSeries = findOrCreate(timeSeriesName);
|
|
|
|
|
List<Integer> timeSeriesValuesToRemoveIds = timeSeries.getValues().stream().map(BaseEntity::getId).collect(Collectors.toList());
|
|
|
|
|
timeSeriesValues.forEach(v -> v.setTimeSeries(timeSeries));
|
|
|
|
|
List<TimeSeriesValue> timeSeriesValuesToRemove = timeSeries.getValues();
|
|
|
|
|
timeSeries.setValues(timeSeriesValues);
|
|
|
|
|
LOG.debug("Save time series {} ", timeSeries.getName());
|
|
|
|
|
TimeSeries savedTimeSeries = timeSeriesRepository.save(timeSeries);
|
|
|
|
|
LOG.debug("Clear {} time series values ", timeSeriesValuesToRemoveIds.size());
|
|
|
|
|
LOG.debug("Clear {} time series values ", timeSeriesValuesToRemove.size());
|
|
|
|
|
timeSeriesValueRepository.deleteAll(timeSeriesValuesToRemove);
|
|
|
|
|
return savedTimeSeries;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|