Microservice SDK - Retrieve MeasurementValue

Hi

I m creating a custom Microservice in Java for C8Y (10.13).
I would like my microservice to be generic and to retrieve all the measurements; without a specific type. So i call the measurementApi to retrieve the measurements from last month and end up with List of MeasurementRepresentation.

From there, I would like to retrieve the Measurement name, serie(s), unit(s) and value(s) for each MeasurementRepresentation.
For example

Memory”: {
Total Memory”: {
“unit”: “bytes”,
“value”: 167772160
}
Used Memory”: {
“unit”: “bytes”,
“value”: 1555225
}
}

We have the type MeasurementValue within our SDK so I was hoping to be able to use this type to extract the data (the Total Memory one for example). However, it does not work and I need apparently to use the type Map<?,?> which will have the unit and the value as keys. This is really not pretty and so I was wondering if there is a nicer way to retrieve the MeasurementValue from a MeasurementRepresentation object?

Below is the ugly code for your reference; which does not work since it s not an instance of MeasurementValue. (I first look for the fragment which represents the measurement (in my example the Memory fragment)

for (String fragmentName : fragments.keySet())
		{
			if (fragments.get(fragmentName) instanceof Map<?, ?>) {
				Map<?, ?> potentialMeasurementFragment = (Map<?, ?>) fragments.get(fragmentName);
				for (Object serie : potentialMeasurementFragment.keySet())
				{
					if (serie instanceof String && potentialMeasurementFragment.get(serie) instanceof MeasurementValue)
					{
						
						MeasurementValue mv = (MeasurementValue) potentialMeasurementFragment.get(serie);
						[...]
					}
				}

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.