From a8dbfe8ad39d01fd7cadf7e1435799b688e82a25 Mon Sep 17 00:00:00 2001
From: Lukasz Lopatowski <llopat@man.poznan.pl>
Date: Wed, 28 May 2025 11:21:10 +0200
Subject: [PATCH] Trying to fix dashboard queries

---
 .../service/impl/DomainServiceIntTest.java    |  3 +-
 .../deployment/api/DcnAdminController.java    |  2 +-
 .../geant/nmaas/monitor/MonitorManager.java   | 29 ++++++++--------
 .../configuration/ConfigFilePreparer.java     |  3 +-
 .../nmaas/portal/api/bulk/BulkController.java |  8 ++---
 .../repositories/AppInstanceRepository.java   |  7 ++--
 .../impl/CustomAccessTokenServiceImpl.java    |  2 +-
 .../service/impl/DomainGroupServiceImpl.java  | 33 ++++++++++---------
 .../service/impl/DomainServiceImpl.java       |  6 ++--
 .../impl/InternationalizationServiceImpl.java |  5 ++-
 10 files changed, 47 insertions(+), 51 deletions(-)

diff --git a/src/integrationTest/java/net/geant/nmaas/portal/service/impl/DomainServiceIntTest.java b/src/integrationTest/java/net/geant/nmaas/portal/service/impl/DomainServiceIntTest.java
index 0fcdcdb88..d0a09110d 100644
--- a/src/integrationTest/java/net/geant/nmaas/portal/service/impl/DomainServiceIntTest.java
+++ b/src/integrationTest/java/net/geant/nmaas/portal/service/impl/DomainServiceIntTest.java
@@ -16,7 +16,6 @@ import org.springframework.test.context.bean.override.mockito.MockitoBean;
 import org.springframework.test.context.junit.jupiter.SpringExtension;
 
 import java.util.ArrayList;
-import java.util.stream.Collectors;
 
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
@@ -52,7 +51,7 @@ public class DomainServiceIntTest {
 
         domainService.createDomain(domainRequest1);
 
-        assertThat(domainService.getDomains().stream().map(Domain::getName).collect(Collectors.toList())).contains("GLOBAL", "domainName");
+        assertThat(domainService.getDomains().stream().map(Domain::getName).toList()).contains("GLOBAL", "domainName");
 
         Long domainId = domainService.findDomain("domainName").orElseThrow().getId();
         domainService.softRemoveDomain(domainId);
diff --git a/src/main/java/net/geant/nmaas/dcn/deployment/api/DcnAdminController.java b/src/main/java/net/geant/nmaas/dcn/deployment/api/DcnAdminController.java
index e7c0d3d8b..373d58e4d 100644
--- a/src/main/java/net/geant/nmaas/dcn/deployment/api/DcnAdminController.java
+++ b/src/main/java/net/geant/nmaas/dcn/deployment/api/DcnAdminController.java
@@ -31,7 +31,7 @@ public class DcnAdminController {
     public List<DcnView> listAllDcns() {
         return dcnRepositoryManager.loadAllNetworks().stream()
                 .map(DcnView::new)
-                .collect(Collectors.toList());
+                .toList();
     }
 
 }
diff --git a/src/main/java/net/geant/nmaas/monitor/MonitorManager.java b/src/main/java/net/geant/nmaas/monitor/MonitorManager.java
index 71f5d2895..8dcb17fb1 100644
--- a/src/main/java/net/geant/nmaas/monitor/MonitorManager.java
+++ b/src/main/java/net/geant/nmaas/monitor/MonitorManager.java
@@ -18,7 +18,6 @@ import org.springframework.transaction.annotation.Transactional;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
-import java.util.stream.Collectors;
 
 @Component
 @RequiredArgsConstructor
@@ -31,19 +30,19 @@ public class MonitorManager {
 
     public void createMonitorEntry(MonitorEntryView monitorEntryView) {
         validateMonitorEntryCreation(monitorEntryView);
-        this.repository.save(modelMapper.map(monitorEntryView, MonitorEntry.class));
+        repository.save(modelMapper.map(monitorEntryView, MonitorEntry.class));
     }
 
     public void updateMonitorEntry(MonitorEntryView monitorEntryView) {
-        MonitorEntry monitorEntry = this.repository.findByServiceName(monitorEntryView.getServiceName())
+        MonitorEntry monitorEntry = repository.findByServiceName(monitorEntryView.getServiceName())
                 .orElseThrow(() -> new MonitorEntryNotFound(monitorEntryNotFoundMessage(monitorEntryView.getServiceName().getName())));
         validateMonitorEntryUpdate(monitorEntryView);
         monitorEntryView.setId(monitorEntry.getId());
-        this.repository.save(modelMapper.map(monitorEntryView, MonitorEntry.class));
+        repository.save(modelMapper.map(monitorEntryView, MonitorEntry.class));
     }
 
     public void updateMonitorEntry(Date lastCheck, ServiceType serviceType, MonitorStatus status) {
-        MonitorEntry monitorEntry = this.repository.findByServiceName(serviceType)
+        MonitorEntry monitorEntry = repository.findByServiceName(serviceType)
                 .orElseThrow(() -> new MonitorEntryNotFound(monitorEntryNotFoundMessage(serviceType.getName())));
         validateMonitorEntryUpdate(lastCheck, status);
         monitorEntry.setStatus(status);
@@ -54,33 +53,33 @@ public class MonitorManager {
         } else if (status.equals(MonitorStatus.FAILURE)) {
             eventPublisher.publishEvent(new NotificationEvent(this, getMailAttributes(serviceType.getName())));
         }
-        this.repository.save(monitorEntry);
+        repository.save(monitorEntry);
     }
 
     @Transactional(propagation = Propagation.REQUIRES_NEW)
     public void deleteMonitorEntry(String serviceName) {
-        if (this.repository.existsByServiceName(ServiceType.valueOf(serviceName.toUpperCase()))) {
-            this.repository.deleteByServiceName(ServiceType.valueOf(serviceName.toUpperCase()));
+        if (repository.existsByServiceName(ServiceType.valueOf(serviceName.toUpperCase()))) {
+            repository.deleteByServiceName(ServiceType.valueOf(serviceName.toUpperCase()));
         }
     }
 
     public List<MonitorEntryView> getAllMonitorEntries() {
-        return this.repository.findAll().stream()
-                .map(entity -> this.modelMapper.map(entity, MonitorEntryView.class))
-                .collect(Collectors.toList());
+        return repository.findAll().stream()
+                .map(entity -> modelMapper.map(entity, MonitorEntryView.class))
+                .toList();
     }
 
     public MonitorEntryView getMonitorEntries(String serviceName) {
-        return this.repository.findByServiceName(ServiceType.valueOf(serviceName.toUpperCase()))
-                .map(entity -> this.modelMapper.map(entity, MonitorEntryView.class))
+        return repository.findByServiceName(ServiceType.valueOf(serviceName.toUpperCase()))
+                .map(entity -> modelMapper.map(entity, MonitorEntryView.class))
                 .orElseThrow(() -> new MonitorEntryNotFound(monitorEntryNotFoundMessage(serviceName)));
     }
 
     public void changeJobState(String serviceName, boolean active) {
-        MonitorEntry monitorEntry = this.repository.findByServiceName(ServiceType.valueOf(serviceName.toUpperCase()))
+        MonitorEntry monitorEntry = repository.findByServiceName(ServiceType.valueOf(serviceName.toUpperCase()))
                 .orElseThrow(() -> new MonitorEntryNotFound(monitorEntryNotFoundMessage(serviceName.toUpperCase())));
         monitorEntry.setActive(active);
-        this.repository.save(monitorEntry);
+        repository.save(monitorEntry);
     }
 
     public boolean existsByServiceName(ServiceType serviceName) {
diff --git a/src/main/java/net/geant/nmaas/nmservice/configuration/ConfigFilePreparer.java b/src/main/java/net/geant/nmaas/nmservice/configuration/ConfigFilePreparer.java
index e7c1fff02..fb744fd44 100644
--- a/src/main/java/net/geant/nmaas/nmservice/configuration/ConfigFilePreparer.java
+++ b/src/main/java/net/geant/nmaas/nmservice/configuration/ConfigFilePreparer.java
@@ -23,7 +23,6 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
-import java.util.stream.Collectors;
 
 import static net.geant.nmaas.nmservice.configuration.ConfigFilePreparerHelper.convertToFreemarkerTemplate;
 import static net.geant.nmaas.nmservice.configuration.ConfigFilePreparerHelper.createModelEntriesFromUserInput;
@@ -94,7 +93,7 @@ class ConfigFilePreparer {
         }
         List<String> ipAddresses = devices.stream()
                 .map(device -> (String) ((Map) device).get(DEFAULT_MANAGED_DEVICE_IP_ADDRESS_KEY))
-                .collect(Collectors.toList());
+                .toList();
         nmServiceRepositoryManager.updateManagedDevices(deploymentId, ipAddresses);
     }
 
diff --git a/src/main/java/net/geant/nmaas/portal/api/bulk/BulkController.java b/src/main/java/net/geant/nmaas/portal/api/bulk/BulkController.java
index 45713f6c1..15fa7148f 100644
--- a/src/main/java/net/geant/nmaas/portal/api/bulk/BulkController.java
+++ b/src/main/java/net/geant/nmaas/portal/api/bulk/BulkController.java
@@ -156,7 +156,7 @@ public class BulkController {
 
         return ResponseEntity.ok(mapToViewList(filter(false, bulkDeploymentRepository.findByType(BulkType.DOMAIN))).stream()
                 .filter(bulk -> bulk.getCreator().getId().equals(user.getId()))
-                .collect(Collectors.toList()));
+                .toList());
     }
 
     @GetMapping("/apps")
@@ -173,7 +173,7 @@ public class BulkController {
 
         return ResponseEntity.ok(mapToViewList(filter(false, bulkDeploymentRepository.findByType(BulkType.APPLICATION))).stream()
                 .filter(bulk -> bulk.getCreator().getId().equals(user.getId()))
-                .collect(Collectors.toList()));
+                .toList());
     }
 
     @DeleteMapping("/{id}")
@@ -206,7 +206,7 @@ public class BulkController {
     private List<BulkDeploymentViewS> mapToViewList(List<BulkDeployment> deployments) {
         return deployments.stream()
                 .map(bulk -> mapToView(bulk, BulkDeploymentViewS.class))
-                .collect(Collectors.toList());
+                .toList();
     }
 
     @GetMapping("/refresh/{id}")
@@ -224,7 +224,7 @@ public class BulkController {
     private List<BulkDeploymentViewS> mapToView(List<BulkDeployment> deployments) {
         return deployments.stream()
                 .map(bulk -> mapToView(bulk, BulkDeploymentViewS.class))
-                .collect(Collectors.toList());
+                .toList();
     }
 
     private <T extends BulkDeploymentViewS> T mapToView(BulkDeployment bulk, Class<T> viewType) {
diff --git a/src/main/java/net/geant/nmaas/portal/persistent/repositories/AppInstanceRepository.java b/src/main/java/net/geant/nmaas/portal/persistent/repositories/AppInstanceRepository.java
index 5d0d2852f..b6e1ef10e 100644
--- a/src/main/java/net/geant/nmaas/portal/persistent/repositories/AppInstanceRepository.java
+++ b/src/main/java/net/geant/nmaas/portal/persistent/repositories/AppInstanceRepository.java
@@ -50,16 +50,13 @@ public interface AppInstanceRepository extends JpaRepository<AppInstance, Long>
             "'FAILED_APPLICATION_REMOVED')")
     int isNameAvailableInDomain(@Param(value = "name") String name, @Param(value = "domain") String domain);
 
-    @Query("SELECT COUNT(ai.id) FROM AppInstance ai WHERE ai.createdAt >= :sinceTime")
-    int countAllDeployedSince(@Param("sinceTime") Long sinceTime);
-
-    @Query("SELECT COUNT(ai.id) FROM AppInstance ai WHERE ai.createdAt >= :sinceTime AND ai.createdAt < :endTime")
+    @Query(value = "SELECT COUNT(ai.id) FROM app_instance ai WHERE ai.created_at >= :sinceTime AND ai.created_at < :endTime", nativeQuery = true)
     int countAllDeployedInTimePeriod(@Param("sinceTime") Long sinceTime, @Param("endTime") Long endTime);
 
     @Query("SELECT COUNT(ai.id) FROM AppInstance ai JOIN AppDeployment ad ON ad.deploymentId = ai.internalId WHERE ai.application.name = ?1")
     int countByName(String name);
 
-    @Query("SELECT ai FROM AppInstance ai WHERE ai.createdAt >= :sinceTime AND ai.createdAt <= :endTime")
+    @Query(value = "SELECT * FROM app_instance ai WHERE ai.created_at >= :sinceTime AND ai.created_at <= :endTime", nativeQuery = true)
     List<AppInstance> findAllInTimePeriod(@Param("sinceTime") Long sinceTime, @Param("endTime") Long endTime);
 
     int countAllByOwner(User user);
diff --git a/src/main/java/net/geant/nmaas/portal/service/impl/CustomAccessTokenServiceImpl.java b/src/main/java/net/geant/nmaas/portal/service/impl/CustomAccessTokenServiceImpl.java
index ca7956860..57b4b20b8 100644
--- a/src/main/java/net/geant/nmaas/portal/service/impl/CustomAccessTokenServiceImpl.java
+++ b/src/main/java/net/geant/nmaas/portal/service/impl/CustomAccessTokenServiceImpl.java
@@ -66,7 +66,7 @@ public class CustomAccessTokenServiceImpl implements CustomAccessTokenService {
         return userApiTokenRepository.findAllByUserId(userId).stream()
                 .filter(userApiToken -> !userApiToken.isDeleted())
                 .map(this::mapToView)
-                .collect(Collectors.toList());
+                .toList();
     }
 
     private UserApiToken createNewToken(User user, String name) {
diff --git a/src/main/java/net/geant/nmaas/portal/service/impl/DomainGroupServiceImpl.java b/src/main/java/net/geant/nmaas/portal/service/impl/DomainGroupServiceImpl.java
index b5e3e2737..9650e945a 100644
--- a/src/main/java/net/geant/nmaas/portal/service/impl/DomainGroupServiceImpl.java
+++ b/src/main/java/net/geant/nmaas/portal/service/impl/DomainGroupServiceImpl.java
@@ -28,7 +28,6 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
-import java.util.stream.Collectors;
 
 @Service
 @RequiredArgsConstructor
@@ -66,14 +65,14 @@ public class DomainGroupServiceImpl implements DomainGroupService {
 
         //call existing webhooks
         DomainGroupView domainGroupView = modelMapper.map(domainGroupEntity, DomainGroupView.class);
-        webhookEventRepository.findIdByEventType(WebhookEventType.DOMAIN_GROUP_CHANGE).forEach(id -> scheduleManager.createOneTimeJob(DomainGroupJob.class, "DomainGroup_" + id + "_" + domainGroupView.getId()+ "_" + LocalDateTime.now(), Map.of("webhookId", id, "action", "create","domainGroup",domainGroupView)));
+        webhookEventRepository.findIdByEventType(WebhookEventType.DOMAIN_GROUP_CHANGE).forEach(id -> scheduleManager.createOneTimeJob(DomainGroupJob.class, "DomainGroup_" + id + "_" + domainGroupView.getId() + "_" + LocalDateTime.now(), Map.of("webhookId", id, "action", "create", "domainGroup", domainGroupView)));
         return modelMapper.map(domainGroupEntity, DomainGroupView.class);
     }
 
     @Override
     public DomainGroupView addDomainsToGroup(List<Domain> domains, String groupCodeName) {
         DomainGroup domainGroup = domainGroupRepository.findByCodename(groupCodeName).orElseThrow();
-        domains.forEach( domain -> {
+        domains.forEach(domain -> {
             log.debug("Adding domain {}/{} to group {}", domain.getName(), domain.getCodename(), groupCodeName);
             if (!domainGroup.getDomains().contains(domain)) {
                 domainGroup.addDomain(domain);
@@ -104,7 +103,7 @@ public class DomainGroupServiceImpl implements DomainGroupService {
         }
         domainGroupRepository.deleteById(domainGroupId);
         //call existing webhooks
-        webhookEventRepository.findIdByEventType(WebhookEventType.DOMAIN_GROUP_CHANGE).forEach(id -> scheduleManager.createOneTimeJob(DomainGroupJob.class, "DomainGroup_" + id + "_" + domainGroup.getId()+ "_" + LocalDateTime.now(), Map.of("webhookId", id, "action", "delete","domainGroup",domainGroupView)));
+        webhookEventRepository.findIdByEventType(WebhookEventType.DOMAIN_GROUP_CHANGE).forEach(id -> scheduleManager.createOneTimeJob(DomainGroupJob.class, "DomainGroup_" + id + "_" + domainGroup.getId() + "_" + LocalDateTime.now(), Map.of("webhookId", id, "action", "delete", "domainGroup", domainGroupView)));
     }
 
     @Override
@@ -121,7 +120,7 @@ public class DomainGroupServiceImpl implements DomainGroupService {
     public List<DomainGroupView> getAllDomainGroups() {
         return domainGroupRepository.findAll().stream()
                 .map(g -> modelMapper.map(g, DomainGroupView.class))
-                .collect(Collectors.toList());
+                .toList();
     }
 
     @Override
@@ -130,11 +129,14 @@ public class DomainGroupServiceImpl implements DomainGroupService {
             throw new ProcessingException(String.format("Wrong domain group identifier (%s)", domainGroupId));
         }
         DomainGroup domainGroup = this.domainGroupRepository.findById(domainGroupId).orElseThrow();
-//        updateRolesInDomainsByUsers(view);
+        // updateRolesInDomainsByUsers(view);
         domainGroup.setCodename(view.getCodename());
         domainGroup.setName(view.getName());
-        domainGroup.setManagers(view.getManagers().stream().map(user -> modelMapper.map(user, User.class)).collect(Collectors.toList()));
-        for (ApplicationStatePerDomain appState: domainGroup.getApplicationStatePerDomain()) {
+        domainGroup.setManagers(view.getManagers().stream()
+                .map(user -> modelMapper.map(user, User.class))
+                .toList()
+        );
+        for (ApplicationStatePerDomain appState : domainGroup.getApplicationStatePerDomain()) {
             for (ApplicationStatePerDomainView appStateView : view.getApplicationStatePerDomain()) {
                 if (appState.getApplicationBase().getId().equals(appStateView.getApplicationBaseId())) {
                     appState.applyChangedState(appStateView);
@@ -146,7 +148,7 @@ public class DomainGroupServiceImpl implements DomainGroupService {
 
         //call existing webhooks
         DomainGroupView domainGroupView = modelMapper.map(domainGroup, DomainGroupView.class);
-        webhookEventRepository.findIdByEventType(WebhookEventType.DOMAIN_GROUP_CHANGE).forEach(id -> scheduleManager.createOneTimeJob(DomainGroupJob.class, "DomainGroup_" + id + "_" + domainGroupView.getId()+ "_" + LocalDateTime.now(), Map.of("webhookId", id, "action", "update","domainGroup",domainGroupView)));
+        webhookEventRepository.findIdByEventType(WebhookEventType.DOMAIN_GROUP_CHANGE).forEach(id -> scheduleManager.createOneTimeJob(DomainGroupJob.class, "DomainGroup_" + id + "_" + domainGroupView.getId() + "_" + LocalDateTime.now(), Map.of("webhookId", id, "action", "update", "domainGroup", domainGroupView)));
         return domainGroupView;
     }
 
@@ -157,15 +159,16 @@ public class DomainGroupServiceImpl implements DomainGroupService {
     }
 
     public void deleteAppBaseFromAllAppState(ApplicationBase base) {
-        domainGroupRepository.findAll().forEach(d -> {
-          d.getApplicationStatePerDomain().removeIf(state -> state.getApplicationBase().equals(base));
-        });
+        domainGroupRepository.findAll().forEach(d ->
+                d.getApplicationStatePerDomain().removeIf(state -> state.getApplicationBase().equals(base))
+        );
     }
 
     @Override
     public void deleteUserFromAllDomainsGroups(User user) {
-        domainGroupRepository.findAll().forEach(d -> {
-            d.getManagers().remove(user);
-        });
+        domainGroupRepository.findAll().forEach(d ->
+                d.getManagers().remove(user)
+        );
     }
+
 }
\ No newline at end of file
diff --git a/src/main/java/net/geant/nmaas/portal/service/impl/DomainServiceImpl.java b/src/main/java/net/geant/nmaas/portal/service/impl/DomainServiceImpl.java
index 86ebe4f18..b5709bdd6 100644
--- a/src/main/java/net/geant/nmaas/portal/service/impl/DomainServiceImpl.java
+++ b/src/main/java/net/geant/nmaas/portal/service/impl/DomainServiceImpl.java
@@ -129,7 +129,7 @@ public class DomainServiceImpl implements DomainService {
         return domainRepository.findAll()
                 .stream()
                 .filter(domain -> !domain.isDeleted())
-                .collect(Collectors.toList());
+                .toList();
     }
 
     @Override
@@ -432,7 +432,7 @@ public class DomainServiceImpl implements DomainService {
         return this.userRoleRepository.findDomainMembers(domain).stream()
                 .filter(user -> user.getRoles().stream().anyMatch(role -> role.getRole().name().equalsIgnoreCase(Role.ROLE_DOMAIN_ADMIN.name()) && role.getDomain().getCodename().equals(domain)))
                 .map(user -> modelMapper.map(user, UserView.class))
-                .collect(Collectors.toList());
+                .toList();
     }
 
     @Override
@@ -453,7 +453,7 @@ public class DomainServiceImpl implements DomainService {
                         app.setPvStorageSizeLimit(app.getPvStorageSizeLimit());
                     }
                     return app;
-                }).collect(Collectors.toList())
+                }).toList()
         );
 
         return domain;
diff --git a/src/main/java/net/geant/nmaas/portal/service/impl/InternationalizationServiceImpl.java b/src/main/java/net/geant/nmaas/portal/service/impl/InternationalizationServiceImpl.java
index d621b46b3..f60288bb7 100644
--- a/src/main/java/net/geant/nmaas/portal/service/impl/InternationalizationServiceImpl.java
+++ b/src/main/java/net/geant/nmaas/portal/service/impl/InternationalizationServiceImpl.java
@@ -19,7 +19,6 @@ import java.io.IOException;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.stream.Collectors;
 
 @Service
 @RequiredArgsConstructor
@@ -109,7 +108,7 @@ public class InternationalizationServiceImpl implements InternationalizationServ
         return repository.findAll().stream()
                 .map(InternationalizationSimple::getAsInternationalizationView)
                 .map(lang -> modelMapper.map(lang, InternationalizationBriefView.class))
-                .collect(Collectors.toList());
+                .toList();
     }
 
     @Override
@@ -136,7 +135,7 @@ public class InternationalizationServiceImpl implements InternationalizationServ
         return repository.findAll().stream()
                 .filter(InternationalizationSimple::isEnabled)
                 .map(InternationalizationSimple::getLanguage)
-                .collect(Collectors.toList());
+                .toList();
     }
 
     @Override
-- 
GitLab