1 package de.dlr.shepard.data.timeseries.services;
2
3 import de.dlr.shepard.data.timeseries.io.TimeseriesWithDataPoints;
4 import de.dlr.shepard.data.timeseries.model.Timeseries;
5 import de.dlr.shepard.data.timeseries.model.TimeseriesDataPointsQueryParams;
6 import de.dlr.shepard.data.timeseries.utilities.CsvConverter;
7 import jakarta.enterprise.context.RequestScoped;
8 import jakarta.inject.Inject;
9 import java.io.FileInputStream;
10 import java.io.IOException;
11 import java.io.InputStream;
12 import java.util.List;
13
14 @RequestScoped
15 public class TimeseriesCsvService {
16
17 @Inject
18 TimeseriesService timeseriesService;
19
20 @Inject
21 TimeseriesContainerService timeseriesContainerService;
22
23
24
25
26
27
28
29
30
31 public InputStream exportTimeseriesDataToCsv(
32 long containerId,
33 Timeseries timeseries,
34 TimeseriesDataPointsQueryParams queryParams
35 ) {
36 timeseriesContainerService.getContainer(containerId);
37
38 var stream = CsvConverter.convertToCsv(
39 timeseries,
40 this.timeseriesService.getDataPointsByTimeseries(containerId, timeseries, queryParams)
41 );
42 return stream;
43 }
44
45
46
47
48
49
50
51
52
53
54 public InputStream exportManyTimeseriesWithDataPointsToCsv(
55 Long containerId,
56 List<Timeseries> timeseriesList,
57 TimeseriesDataPointsQueryParams queryParams
58 ) throws IOException {
59 timeseriesContainerService.getContainer(containerId);
60
61 var timeseriesWithDataPointsList = timeseriesService.getManyTimeseriesWithDataPoints(
62 containerId,
63 timeseriesList,
64 queryParams
65 );
66 var stream = CsvConverter.convertToCsv(timeseriesWithDataPointsList);
67 return stream;
68 }
69
70 public void importTimeseriesFromCsv(long containerId, String filePath) throws IOException {
71 timeseriesContainerService.getContainer(containerId);
72 timeseriesContainerService.assertIsAllowedToEditContainer(containerId);
73
74 try (InputStream fileInputStream = new FileInputStream(filePath)) {
75 List<TimeseriesWithDataPoints> timeseriesWithDataPointsList = CsvConverter.convertToTimeseriesWithData(
76 fileInputStream
77 );
78 for (var timeseriesWithDataPoints : timeseriesWithDataPointsList) {
79 this.timeseriesService.saveDataPoints(
80 containerId,
81 timeseriesWithDataPoints.getTimeseries(),
82 timeseriesWithDataPoints.getPoints()
83 );
84 }
85 }
86 }
87 }