diff --git a/src/main/java/org/etsi/osl/metrico/JsonUtil.java b/src/main/java/org/etsi/osl/metrico/JsonUtil.java index 6b098a50e882a26680eed454129fd1a55ded6ab9..a801f496c5f22d232892748989ed761609770583 100644 --- a/src/main/java/org/etsi/osl/metrico/JsonUtil.java +++ b/src/main/java/org/etsi/osl/metrico/JsonUtil.java @@ -1,7 +1,9 @@ package org.etsi.osl.metrico; import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; +import org.etsi.osl.tmf.pm628.model.MeasurementCollectionJobMVO; import java.io.IOException; @@ -12,4 +14,15 @@ public class JsonUtil { mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); return mapper.readValue( content, valueType); } + + public static <T> String toJsonString(T object) { + ObjectMapper mapper = new ObjectMapper(); + mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); + try { + return mapper.writeValueAsString(object); + } catch (JsonProcessingException e) { + e.printStackTrace(); + return null; + } + } } \ No newline at end of file diff --git a/src/main/java/org/etsi/osl/metrico/mapper/DataAccessEndpointMapper.java b/src/main/java/org/etsi/osl/metrico/mapper/DataAccessEndpointMapper.java new file mode 100644 index 0000000000000000000000000000000000000000..96188c5cfea4f9507820c31c0d7d00ad19e1af24 --- /dev/null +++ b/src/main/java/org/etsi/osl/metrico/mapper/DataAccessEndpointMapper.java @@ -0,0 +1,45 @@ +package org.etsi.osl.metrico.mapper; + +import org.etsi.osl.tmf.pm628.model.DataAccessEndpoint; +import org.etsi.osl.tmf.pm628.model.DataAccessEndpointMVO; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.factory.Mappers; + +@Mapper +public interface DataAccessEndpointMapper { + DataAccessEndpointMapper INSTANCE = Mappers.getMapper(DataAccessEndpointMapper.class); + + @Mapping(target = "type", source = "type") + @Mapping(target = "baseType", source = "baseType") + @Mapping(target = "schemaLocation", source = "schemaLocation") + @Mapping(target = "href", source = "href") + @Mapping(target = "uuid", source = "uuid") + @Mapping(target = "category", source = "category") + @Mapping(target = "description", source = "description") + @Mapping(target = "name", source = "name") + @Mapping(target = "endOperatingDate", source = "endOperatingDate") + @Mapping(target = "administrativeState", source = "administrativeState") + @Mapping(target = "operationalState", source = "operationalState") + @Mapping(target = "resourceStatus", source = "resourceStatus") + @Mapping(target = "usageState", source = "usageState") + @Mapping(target = "validFor", source = "validFor") + @Mapping(target = "note", source = "note") + @Mapping(target = "resourceOrderItem", source = "resourceOrderItem") + @Mapping(target = "place", source = "place") + @Mapping(target = "relatedParty", source = "relatedParty") + @Mapping(target = "resourceRelationship", source = "resourceRelationship") + @Mapping(target = "resourceCharacteristic", source = "resourceCharacteristic") + @Mapping(target = "attachment", source = "attachment") + @Mapping(target = "resourceSpecification", source = "resourceSpecification") + @Mapping(target = "startOperatingDate", source = "startOperatingDate") + @Mapping(target = "resourceVersion", source = "resourceVersion") + @Mapping(target = "activationFeature", source = "activationFeature") + @Mapping(target = "intent", source = "intent") + @Mapping(target = "externalIdentifier", source = "externalIdentifier") + @Mapping(target = "value", source = "value") + @Mapping(target = "uri", source = "uri") + @Mapping(target = "uriQueryFilter", source = "uriQueryFilter") + @Mapping(target = "apiType", source = "apiType") + DataAccessEndpointMVO toDataAccessEndpointMVO(DataAccessEndpoint dataAccessEndpoint); +} \ No newline at end of file diff --git a/src/main/java/org/etsi/osl/metrico/mapper/MeasurementCollectionJobMapper.java b/src/main/java/org/etsi/osl/metrico/mapper/MeasurementCollectionJobMapper.java new file mode 100644 index 0000000000000000000000000000000000000000..35489e6aa5f80542b2538e759d63743f8e86f435 --- /dev/null +++ b/src/main/java/org/etsi/osl/metrico/mapper/MeasurementCollectionJobMapper.java @@ -0,0 +1,55 @@ +package org.etsi.osl.metrico.mapper; + +import org.etsi.osl.tmf.pm628.model.MeasurementCollectionJob; +import org.etsi.osl.tmf.pm628.model.MeasurementCollectionJobMVO; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.factory.Mappers; + +@Mapper +public interface MeasurementCollectionJobMapper { + + MeasurementCollectionJobMapper INSTANCE = Mappers.getMapper(MeasurementCollectionJobMapper.class); + + @Mapping(source = "outputFormat", target = "outputFormat") + @Mapping(source = "reportingPeriod", target = "reportingPeriod") + @Mapping(source = "jobCollectionFilter", target = "jobCollectionFilter") + @Mapping(source = "searchTaskFilter", target = "searchTaskFilter") + @Mapping(source = "jobOnDemand", target = "jobOnDemand") + @Mapping(source = "consumingApplicationId", target = "consumingApplicationId") + @Mapping(source = "producingApplicationId", target = "producingApplicationId") + @Mapping(source = "granularity", target = "granularity") + @Mapping(source = "performanceIndicatorGroupSpecification", target = "performanceIndicatorGroupSpecification") + @Mapping(source = "performanceIndicatorSpecification", target = "performanceIndicatorSpecification") + @Mapping(source = "trackingRecord", target = "trackingRecord") + @Mapping(source = "fileTransferData", target = "fileTransferData") + @Mapping(source = "dataAccessEndpoint", target = "dataAccessEndpoint") + @Mapping(source = "scheduleDefinition", target = "scheduleDefinition") + @Mapping(source = "type", target = "type") + @Mapping(source = "baseType", target = "baseType") + @Mapping(source = "schemaLocation", target = "schemaLocation") + @Mapping(source = "href", target = "href") + @Mapping(source = "uuid", target = "uuid") + MeasurementCollectionJobMVO toMeasurementCollectionJobMVO(MeasurementCollectionJob job); + + @Mapping(source = "outputFormat", target = "outputFormat") + @Mapping(source = "reportingPeriod", target = "reportingPeriod") + @Mapping(source = "jobCollectionFilter", target = "jobCollectionFilter") + @Mapping(source = "searchTaskFilter", target = "searchTaskFilter") + @Mapping(source = "jobOnDemand", target = "jobOnDemand") + @Mapping(source = "consumingApplicationId", target = "consumingApplicationId") + @Mapping(source = "producingApplicationId", target = "producingApplicationId") + @Mapping(source = "granularity", target = "granularity") + @Mapping(source = "performanceIndicatorGroupSpecification", target = "performanceIndicatorGroupSpecification") + @Mapping(source = "performanceIndicatorSpecification", target = "performanceIndicatorSpecification") + @Mapping(source = "trackingRecord", target = "trackingRecord") + @Mapping(source = "fileTransferData", target = "fileTransferData") + @Mapping(source = "dataAccessEndpoint", target = "dataAccessEndpoint") + @Mapping(source = "scheduleDefinition", target = "scheduleDefinition") + @Mapping(source = "type", target = "type") + @Mapping(source = "baseType", target = "baseType") + @Mapping(source = "schemaLocation", target = "schemaLocation") + @Mapping(source = "href", target = "href") + @Mapping(source = "uuid", target = "uuid") + MeasurementCollectionJob toMeasurementCollectionJob(MeasurementCollectionJobMVO jobMVO); +} \ No newline at end of file diff --git a/src/main/java/org/etsi/osl/metrico/services/MetricoService.java b/src/main/java/org/etsi/osl/metrico/services/MetricoService.java index 595ce1ceb2e8d878179a420f418fdbe0d32383b8..0a281d5991ba0206de5c522962cffc0fdbf776f8 100644 --- a/src/main/java/org/etsi/osl/metrico/services/MetricoService.java +++ b/src/main/java/org/etsi/osl/metrico/services/MetricoService.java @@ -3,6 +3,7 @@ package org.etsi.osl.metrico.services; import jakarta.validation.constraints.NotNull; import org.apache.camel.ProducerTemplate; import org.etsi.osl.metrico.JsonUtil; +import org.etsi.osl.metrico.mapper.DataAccessEndpointMapper; import org.etsi.osl.metrico.mapper.JobMapper; import org.etsi.osl.metrico.model.Job; import org.etsi.osl.metrico.prometheus.PrometheusQueries; @@ -65,12 +66,13 @@ public class MetricoService { dataFilterMap.addMappingsItem(dataFilterMapItem); givenDataAccessEndpoint.setUriQueryFilter(dataFilterMap); - List<DataAccessEndpoint> newDataAccessEndpoint = new ArrayList<>(); - newDataAccessEndpoint.add(givenDataAccessEndpoint); + List<DataAccessEndpointMVO> newDataAccessEndpointMVO = new ArrayList<>(); + newDataAccessEndpointMVO.add(DataAccessEndpointMapper.INSTANCE.toDataAccessEndpointMVO(givenDataAccessEndpoint)); - givenMCJ.setDataAccessEndpoint(newDataAccessEndpoint); + MeasurementCollectionJobMVO promResponseMCJ = new MeasurementCollectionJobMVO(); - producerTemplate.sendBody(PM_MEASUREMENT_COLLECTION_JOB_UPDATE, givenMCJ); + promResponseMCJ.setDataAccessEndpoint(newDataAccessEndpointMVO); + producerTemplate.sendBodyAndHeader(PM_MEASUREMENT_COLLECTION_JOB_UPDATE, JsonUtil.toJsonString(promResponseMCJ),"mcjid",givenMCJ.getUuid() ); return promResponse; }