From 9fe493a0d8ba5800d5985ced9d498f1efc4180bd Mon Sep 17 00:00:00 2001
From: Christos Tranoris <tranoris@ece.upatras.gr>
Date: Sat, 11 Jan 2025 02:24:30 +0200
Subject: [PATCH] fixes for metrico

---
 ...asurementCollectionJobApiRouteBuilder.java |  8 +--
 .../MeasurementCollectionJobService.java      | 49 ++++++++++++++++++-
 2 files changed, 52 insertions(+), 5 deletions(-)

diff --git a/src/main/java/org/etsi/osl/tmf/pm628/api/MeasurementCollectionJobApiRouteBuilder.java b/src/main/java/org/etsi/osl/tmf/pm628/api/MeasurementCollectionJobApiRouteBuilder.java
index 0e5e1c7..a56998c 100644
--- a/src/main/java/org/etsi/osl/tmf/pm628/api/MeasurementCollectionJobApiRouteBuilder.java
+++ b/src/main/java/org/etsi/osl/tmf/pm628/api/MeasurementCollectionJobApiRouteBuilder.java
@@ -30,7 +30,7 @@ public class MeasurementCollectionJobApiRouteBuilder extends RouteBuilder {
     private String PM_GET_MEASUREMENT_COLLECTION_JOBS;
 
     @Value("${PM_MEASUREMENT_COLLECTION_GET_JOB_BY_ID}")
-    private String PM_GET_MEASUREMENT_COLLECTION_JOB_BY_ID;
+    private String PM_MEASUREMENT_COLLECTION_GET_JOB_BY_ID;
 
     @Value("${PM_MEASUREMENT_COLLECTION_JOB_ADD}")
     private String PM_ADD_MEASUREMENT_COLLECTION_JOB;
@@ -58,10 +58,10 @@ public class MeasurementCollectionJobApiRouteBuilder extends RouteBuilder {
             .bean(measurementCollectionJobService, "findAllMeasurementCollectionJobs")
             .convertBodyTo( String.class );
 
-        from(PM_GET_MEASUREMENT_COLLECTION_JOB_BY_ID)
-            .log(LoggingLevel.INFO, log, PM_GET_MEASUREMENT_COLLECTION_JOB_BY_ID + " message received!")
+        from(PM_MEASUREMENT_COLLECTION_GET_JOB_BY_ID)
+            .log(LoggingLevel.INFO, log, PM_MEASUREMENT_COLLECTION_GET_JOB_BY_ID + " message received!")
             .to("log:DEBUG?showBody=true&showHeaders=true")
-            .bean(measurementCollectionJobService, "findMeasurementCollectionJobByUuid")
+            .bean(measurementCollectionJobService, "findMeasurementCollectionJobByUuidEagerAsString")
             .convertBodyTo( String.class );
 
         from(PM_ADD_MEASUREMENT_COLLECTION_JOB)
diff --git a/src/main/java/org/etsi/osl/tmf/pm628/reposervices/MeasurementCollectionJobService.java b/src/main/java/org/etsi/osl/tmf/pm628/reposervices/MeasurementCollectionJobService.java
index af420a7..46960b7 100755
--- a/src/main/java/org/etsi/osl/tmf/pm628/reposervices/MeasurementCollectionJobService.java
+++ b/src/main/java/org/etsi/osl/tmf/pm628/reposervices/MeasurementCollectionJobService.java
@@ -6,6 +6,7 @@ import jakarta.validation.Valid;
 import org.etsi.osl.tmf.pm628.api.MeasurementCollectionJobApiRouteBuilderEvents;
 import org.etsi.osl.tmf.pm628.model.*;
 import org.etsi.osl.tmf.pm628.repo.MeasurementCollectionJobRepository;
+import org.hibernate.Hibernate;
 import org.hibernate.Session;
 import org.hibernate.SessionFactory;
 import org.hibernate.Transaction;
@@ -20,6 +21,9 @@ import java.io.UnsupportedEncodingException;
 import java.net.URLDecoder;
 import java.nio.charset.StandardCharsets;
 import java.util.*;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.datatype.hibernate5.jakarta.Hibernate5JakartaModule;
 
 @Service
 @Transactional
@@ -277,6 +281,47 @@ public class MeasurementCollectionJobService {
         return resultList;
     }
 
+    @Transactional  
+    public String findMeasurementCollectionJobByUuidEagerAsString(String uuid) throws JsonProcessingException{
+
+      MeasurementCollectionJob mcj = findMeasurementCollectionJobByUuidEager(uuid);
+      ObjectMapper mapper = new ObjectMapper();
+      mapper.registerModule(new Hibernate5JakartaModule());
+      String res = mapper.writeValueAsString(mcj);
+      
+      return res;
+
+    }
+    
+
+    private MeasurementCollectionJob findMeasurementCollectionJobByUuidEager(String id) {
+      if ( id == null || id.equals("")) {
+        return null;
+    }
+    Session session = sessionFactory.openSession();
+    Transaction tx = session.beginTransaction();
+    MeasurementCollectionJob s = null;
+    try {
+        s = (MeasurementCollectionJob) session.get(MeasurementCollectionJob.class, id);
+        if (s == null) {
+            return this.findMeasurementCollectionJobByUuid(id);// last resort
+        }
+
+        Hibernate.initialize(s.getDataAccessEndpoint() );
+        Hibernate.initialize(s.getFileTransferData() );
+        Hibernate.initialize(s.getPerformanceIndicatorGroupSpecification() );
+        Hibernate.initialize(s.getPerformanceIndicatorSpecification());
+        Hibernate.initialize(s.getScheduleDefinition() );
+        Hibernate.initialize(s.getTrackingRecord() );
+        
+        tx.commit();
+    } finally {
+        session.close();
+    }
+    
+    return s;
+    }
+
     public MeasurementCollectionJob findMeasurementCollectionJobByUuid(String uuid){
         log.debug("MeasurementCollectionJob FIND BY UUID");
         Optional<MeasurementCollectionJob> measurementCollectionJob = measurementCollectionJobRepository.findByUuid(uuid);
@@ -310,7 +355,9 @@ public class MeasurementCollectionJobService {
         measurementCollectionJob = this.measurementCollectionJobRepository.save(measurementCollectionJob);
 
         // This may be unnecessary since MeasurementCollectionJobMVO doesn't have the executionState attribute
-        executionStateChanged = !originalExecutionState.equals(measurementCollectionJob.getExecutionState());
+        if ( originalExecutionState!=null) {
+          executionStateChanged = !originalExecutionState.equals(measurementCollectionJob.getExecutionState());          
+        }
 
         if (executionStateChanged) {
             raiseMCJExecutionStateChangeNotification(measurementCollectionJob);
-- 
GitLab