1 package de.dlr.shepard.data.timeseries.services;
2
3 import de.dlr.shepard.auth.permission.services.PermissionsService;
4 import de.dlr.shepard.auth.users.entities.User;
5 import de.dlr.shepard.auth.users.services.UserService;
6 import de.dlr.shepard.common.exceptions.InvalidAuthException;
7 import de.dlr.shepard.common.exceptions.InvalidPathException;
8 import de.dlr.shepard.common.util.DateHelper;
9 import de.dlr.shepard.common.util.PermissionType;
10 import de.dlr.shepard.common.util.QueryParamHelper;
11 import de.dlr.shepard.data.AbstractContainerService;
12 import de.dlr.shepard.data.timeseries.daos.TimeseriesContainerDAO;
13 import de.dlr.shepard.data.timeseries.io.TimeseriesContainerIO;
14 import de.dlr.shepard.data.timeseries.model.TimeseriesContainer;
15 import io.quarkus.logging.Log;
16 import jakarta.enterprise.context.RequestScoped;
17 import jakarta.inject.Inject;
18 import java.util.List;
19 import java.util.Optional;
20
21 @RequestScoped
22 public class TimeseriesContainerService extends AbstractContainerService<TimeseriesContainer, TimeseriesContainerIO> {
23
24 @Inject
25 TimeseriesContainerDAO timeseriesContainerDAO;
26
27 @Inject
28 UserService userService;
29
30 @Inject
31 DateHelper dateHelper;
32
33 @Inject
34 PermissionsService permissionsService;
35
36 @Inject
37 TimeseriesService timeseriesService;
38
39 public List<TimeseriesContainer> getContainers() {
40 return timeseriesContainerDAO.findAll().stream().filter(c -> c.isDeleted() == false).toList();
41 }
42
43 @Override
44 public List<TimeseriesContainer> getAllContainers(QueryParamHelper params) {
45 User user = userService.getCurrentUser();
46 var containers = timeseriesContainerDAO.findAllTimeseriesContainers(params, user.getUsername());
47 return containers;
48 }
49
50
51
52
53
54
55
56
57 @Override
58 public TimeseriesContainer getContainer(long timeseriesContainerId) {
59 Optional<TimeseriesContainer> containerOptional = getContainerOptional(timeseriesContainerId);
60 if (containerOptional.isEmpty()) {
61 String errorMsg = String.format(
62 "ID ERROR - Timeseries Container with id %s is null or deleted",
63 timeseriesContainerId
64 );
65 Log.errorf(errorMsg);
66 throw new InvalidPathException(errorMsg);
67 }
68 assertIsAllowedToReadContainer(timeseriesContainerId);
69 return containerOptional.get();
70 }
71
72
73
74
75
76
77
78
79
80
81
82 @Deprecated
83 public TimeseriesContainer getContainerNoChecks(long timeseriesContainerId) {
84 Optional<TimeseriesContainer> containerOptional = getContainerOptional(timeseriesContainerId);
85 if (containerOptional.isEmpty()) {
86 String errorMsg = String.format(
87 "ID ERROR - Timeseries Container with id %s is null or deleted",
88 timeseriesContainerId
89 );
90 Log.errorf(errorMsg);
91 throw new InvalidPathException(errorMsg);
92 }
93 return containerOptional.get();
94 }
95
96 private Optional<TimeseriesContainer> getContainerOptional(long timeseriesContainerId) {
97 TimeseriesContainer timeseriesContainer = timeseriesContainerDAO.findByNeo4jId(timeseriesContainerId);
98 if (timeseriesContainer == null || timeseriesContainer.isDeleted()) {
99 return Optional.empty();
100 }
101 return Optional.of(timeseriesContainer);
102 }
103
104
105
106
107
108
109
110
111 @Override
112 public TimeseriesContainer createContainer(TimeseriesContainerIO timeseriesContainerIO) {
113 User user = userService.getCurrentUser();
114 var toCreate = new TimeseriesContainer();
115 toCreate.setCreatedAt(dateHelper.getDate());
116 toCreate.setCreatedBy(user);
117 toCreate.setDatabase(null);
118 toCreate.setName(timeseriesContainerIO.getName());
119
120 var created = timeseriesContainerDAO.createOrUpdate(toCreate);
121 permissionsService.createPermissions(created, user, PermissionType.Private);
122 return created;
123 }
124
125
126
127
128
129
130
131 @Override
132 public void deleteContainer(long timeSeriesContainerId) {
133 User user = userService.getCurrentUser();
134 TimeseriesContainer timeseriesContainer = this.getContainer(timeSeriesContainerId);
135 timeseriesService.deleteTimeseriesByContainerId(timeSeriesContainerId);
136
137 timeseriesContainer.setDeleted(true);
138 timeseriesContainer.setUpdatedAt(dateHelper.getDate());
139 timeseriesContainer.setUpdatedBy(user);
140 timeseriesContainerDAO.createOrUpdate(timeseriesContainer);
141 }
142 }