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 private Optional<TimeseriesContainer> getContainerOptional(long timeseriesContainerId) {
73 TimeseriesContainer timeseriesContainer = timeseriesContainerDAO.findByNeo4jId(timeseriesContainerId);
74 if (timeseriesContainer == null || timeseriesContainer.isDeleted()) {
75 return Optional.empty();
76 }
77 return Optional.of(timeseriesContainer);
78 }
79
80
81
82
83
84
85
86
87 @Override
88 public TimeseriesContainer createContainer(TimeseriesContainerIO timeseriesContainerIO) {
89 User user = userService.getCurrentUser();
90 var toCreate = new TimeseriesContainer();
91 toCreate.setCreatedAt(dateHelper.getDate());
92 toCreate.setCreatedBy(user);
93 toCreate.setDatabase(null);
94 toCreate.setName(timeseriesContainerIO.getName());
95
96 var created = timeseriesContainerDAO.createOrUpdate(toCreate);
97 permissionsService.createPermissions(created, user, PermissionType.Private);
98 return created;
99 }
100
101
102
103
104
105
106
107 @Override
108 public void deleteContainer(long timeSeriesContainerId) {
109 User user = userService.getCurrentUser();
110 TimeseriesContainer timeseriesContainer = this.getContainer(timeSeriesContainerId);
111 timeseriesService.deleteTimeseriesByContainerId(timeSeriesContainerId);
112
113 timeseriesContainer.setDeleted(true);
114 timeseriesContainer.setUpdatedAt(dateHelper.getDate());
115 timeseriesContainer.setUpdatedBy(user);
116 timeseriesContainerDAO.createOrUpdate(timeseriesContainer);
117 }
118 }