diff --git a/nifi-ngsild-postgresql-processors/src/main/java/egm/io/nifi/processors/ngsild/utils/NGSIUtils.java b/nifi-ngsild-postgresql-processors/src/main/java/egm/io/nifi/processors/ngsild/utils/NGSIUtils.java index f1dbb53..aeb6b38 100644 --- a/nifi-ngsild-postgresql-processors/src/main/java/egm/io/nifi/processors/ngsild/utils/NGSIUtils.java +++ b/nifi-ngsild-postgresql-processors/src/main/java/egm/io/nifi/processors/ngsild/utils/NGSIUtils.java @@ -150,6 +150,13 @@ private Attribute parseNgsiLdAttribute(String key, JSONObject value, boolean fla "parametername", "Property", "", "", "", "", key.toLowerCase(), false, null ); subAttributes.add(parameterName); + if (Objects.equals(datasetId, "")){ + datasetId = "default"; + } + Attribute parameterDatasetId = new Attribute( + "datasetid", "Property", "", "", "", "", datasetId.toLowerCase(), false, null + ); + subAttributes.add(parameterDatasetId); return new Attribute(GENERIC_MEASURE, attrType, "", observedAt, createdAt, modifiedAt, attrValue, true, subAttributes); } else { return new Attribute(key.toLowerCase(), attrType, datasetId, observedAt, createdAt, modifiedAt, attrValue, !subAttributes.isEmpty(), subAttributes); diff --git a/nifi-ngsild-postgresql-processors/src/test/java/egm/io/nifi/processors/ngsild/TestPostgreSQLBackend.java b/nifi-ngsild-postgresql-processors/src/test/java/egm/io/nifi/processors/ngsild/TestPostgreSQLBackend.java index 6afe67d..9437d4b 100644 --- a/nifi-ngsild-postgresql-processors/src/test/java/egm/io/nifi/processors/ngsild/TestPostgreSQLBackend.java +++ b/nifi-ngsild-postgresql-processors/src/test/java/egm/io/nifi/processors/ngsild/TestPostgreSQLBackend.java @@ -37,12 +37,13 @@ public void testListOfFieldsWithFlattenedObservations() throws IOException { Map typedFields = postgreSQLBackend.listOfFields(entity, "urn:ngsi-ld:Dataset:", false, Collections.emptySet()); - assertEquals(26, typedFields.size()); + assertEquals(27, typedFields.size()); Set keys = typedFields.keySet(); assertTrue(keys.contains(GENERIC_MEASURE)); assertTrue(keys.contains(GENERIC_MEASURE + "_observedat")); assertTrue(keys.contains(GENERIC_MEASURE + "_unitcode")); assertTrue(keys.contains(GENERIC_MEASURE + "_parametername")); + assertTrue(keys.contains(GENERIC_MEASURE + "_datasetid")); } @ParameterizedTest diff --git a/nifi-ngsild-postgresql-processors/src/test/java/egm/io/nifi/processors/ngsild/utils/TestNGSIUtils.java b/nifi-ngsild-postgresql-processors/src/test/java/egm/io/nifi/processors/ngsild/utils/TestNGSIUtils.java index 0616ef5..4dc454d 100644 --- a/nifi-ngsild-postgresql-processors/src/test/java/egm/io/nifi/processors/ngsild/utils/TestNGSIUtils.java +++ b/nifi-ngsild-postgresql-processors/src/test/java/egm/io/nifi/processors/ngsild/utils/TestNGSIUtils.java @@ -68,10 +68,10 @@ public void testEntityWithFlattenObservations() throws IOException { // the entity under test has four observations assertEquals(4, measureAttributes.size()); Attribute measureAttribute = measureAttributes.get(0); - // each observation should have two sub-attributes: parametername and unitcode - assertEquals(2, measureAttribute.subAttrs.size()); + // each observation should have three sub-attributes: parametername, unitcode and datasetId + assertEquals(3, measureAttribute.subAttrs.size()); assertTrue(measureAttribute.subAttrs.stream().allMatch(attribute -> - attribute.getAttrName().equals("parametername") || attribute.getAttrName().equals("unitcode") + attribute.getAttrName().equals("parametername") || attribute.getAttrName().equals("unitcode") || attribute.getAttrName().equals("datasetid") )); } }