From 5b74c0ca44ae675e7de3e5db52cc62db71c0a86b Mon Sep 17 00:00:00 2001 From: ranim-n Date: Wed, 19 Feb 2025 17:06:24 +0100 Subject: [PATCH 1/2] feat: extract metadata for resources from entities and align attributes names with dcat --- .../io/nifi/processors/ckan/CKANBackend.java | 5 +-- .../io/nifi/processors/ckan/NgsiLdToCkan.java | 4 ++ .../processors/ckan/model/DCATMetadata.java | 2 + .../ckan/utils/BuildDCATMetadata.java | 39 +++++++++++++------ 4 files changed, 35 insertions(+), 15 deletions(-) diff --git a/nifi-ngsild-ckan-processors/src/main/java/egm/io/nifi/processors/ckan/CKANBackend.java b/nifi-ngsild-ckan-processors/src/main/java/egm/io/nifi/processors/ckan/CKANBackend.java index 107aae0..0e54eea 100644 --- a/nifi-ngsild-ckan-processors/src/main/java/egm/io/nifi/processors/ckan/CKANBackend.java +++ b/nifi-ngsild-ckan-processors/src/main/java/egm/io/nifi/processors/ckan/CKANBackend.java @@ -221,8 +221,6 @@ private String createPackage(String pkgName, String pkgTitle, String orgId, DCAT dataJson.addProperty("version",dcatMetadata.getVersion()); dataJson.addProperty("url",dcatMetadata.getLandingPage()); dataJson.addProperty("visibility",dcatMetadata.getVisibility()); - dataJson.addProperty("url",dcatMetadata.getLandingPage()); - extrasJson.addProperty("key","publisher_type"); extrasJson.addProperty("value",dcatMetadata.getOrganizationType()); @@ -528,8 +526,7 @@ public String buildResName(Entity entity, DCATMetadata dcatMetadata) throws Exce if (dcatMetadata != null && dcatMetadata.getResourceName() != null) { resName = dcatMetadata.getResourceName(); } else { - String entityTitle = ngsiUtils.getSpecificAttributeValue(entity, "title"); - resName = entityTitle != null ? entityTitle : entity.getEntityId(); + resName = entity.getEntityId(); } if (resName.length() > NGSIConstants.CKAN_MAX_NAME_LEN) { diff --git a/nifi-ngsild-ckan-processors/src/main/java/egm/io/nifi/processors/ckan/NgsiLdToCkan.java b/nifi-ngsild-ckan-processors/src/main/java/egm/io/nifi/processors/ckan/NgsiLdToCkan.java index 732553b..3d7ffad 100644 --- a/nifi-ngsild-ckan-processors/src/main/java/egm/io/nifi/processors/ckan/NgsiLdToCkan.java +++ b/nifi-ngsild-ckan-processors/src/main/java/egm/io/nifi/processors/ckan/NgsiLdToCkan.java @@ -170,6 +170,10 @@ public void aggregate(Entity entity, long creationTime) { getLogger().debug("DCAT metadata: {}" , dcatMetadata); for (Entity entity : entities) { + + // Update DCATMetadata with entity attributes + buildDCATMetadata.addMetadataFromEntity(entity, dcatMetadata); + final String pkgTitle = flowFile.getAttribute("datasetTitle"); final String pkgName = ckanBackend.buildPkgName(pkgTitle, dcatMetadata); final String resName = ckanBackend.buildResName(entity, dcatMetadata); diff --git a/nifi-ngsild-ckan-processors/src/main/java/egm/io/nifi/processors/ckan/model/DCATMetadata.java b/nifi-ngsild-ckan-processors/src/main/java/egm/io/nifi/processors/ckan/model/DCATMetadata.java index 86278c7..5ccb640 100644 --- a/nifi-ngsild-ckan-processors/src/main/java/egm/io/nifi/processors/ckan/model/DCATMetadata.java +++ b/nifi-ngsild-ckan-processors/src/main/java/egm/io/nifi/processors/ckan/model/DCATMetadata.java @@ -283,6 +283,8 @@ public String getResourceName() { return resourceName; } + public void setResourceName(String resourceName) {this.resourceName = resourceName;} + public String getResourceRights() { return resourceRights; } diff --git a/nifi-ngsild-ckan-processors/src/main/java/egm/io/nifi/processors/ckan/utils/BuildDCATMetadata.java b/nifi-ngsild-ckan-processors/src/main/java/egm/io/nifi/processors/ckan/utils/BuildDCATMetadata.java index 474ce25..12e0a6d 100644 --- a/nifi-ngsild-ckan-processors/src/main/java/egm/io/nifi/processors/ckan/utils/BuildDCATMetadata.java +++ b/nifi-ngsild-ckan-processors/src/main/java/egm/io/nifi/processors/ckan/utils/BuildDCATMetadata.java @@ -1,6 +1,8 @@ package egm.io.nifi.processors.ckan.utils; import egm.io.nifi.processors.ckan.model.DCATMetadata; +import egm.io.nifi.processors.ckan.ngsild.Entity; +import egm.io.nifi.processors.ckan.ngsild.NGSIUtils; import org.apache.commons.collections.map.CaseInsensitiveMap; import org.apache.nifi.flowfile.FlowFile; import org.apache.nifi.processor.ProcessSession; @@ -11,6 +13,7 @@ import static egm.io.nifi.processors.ckan.ngsild.NGSIConstants.JSON_LD_FORMAT; public class BuildDCATMetadata { + final NGSIUtils ngsiUtils = new NGSIUtils(); public DCATMetadata getMetadataFromFlowFile(FlowFile flowFile, final ProcessSession session) { final byte[] buffer = new byte[(int) flowFile.getSize()]; @@ -19,7 +22,7 @@ public DCATMetadata getMetadataFromFlowFile(FlowFile flowFile, final ProcessSess // Create the PreparedStatement to use for this FlowFile. Map flowFileAttributes = flowFile.getAttributes(); Map newFlowFileAttributes = new CaseInsensitiveMap(flowFileAttributes); - String [] keywords = newFlowFileAttributes.get("keywords").replace("[", "").replace("]","").replaceAll("\"","").split(","); + String [] keywords = newFlowFileAttributes.get("keyword").replace("[", "").replace("]","").replaceAll("\"","").split(","); return new DCATMetadata( newFlowFileAttributes.get("organizationName"), @@ -40,17 +43,31 @@ public DCATMetadata getMetadataFromFlowFile(FlowFile flowFile, final ProcessSess newFlowFileAttributes.get("landingPage"), newFlowFileAttributes.get("visibility"), newFlowFileAttributes.get("datasetRights"), - newFlowFileAttributes.get("accessURL"), - newFlowFileAttributes.get("availability"), - newFlowFileAttributes.get("resourceDescription"), + null, + null, + null, JSON_LD_FORMAT, - newFlowFileAttributes.get("mimeType"), - newFlowFileAttributes.get("license"), - newFlowFileAttributes.get("licenseType"), - newFlowFileAttributes.get("downloadURL"), - newFlowFileAttributes.get("byteSize"), - newFlowFileAttributes.get("resourceName"), - newFlowFileAttributes.get("resourceRights") + null, + null, + null, + null, + null, + null, + null ); } + + public void addMetadataFromEntity (Entity entity, DCATMetadata dcatMetadata) { + dcatMetadata.setAccessURL(ngsiUtils.getSpecificAttributeValue(entity, "accessURL")); + dcatMetadata.setAvailability(ngsiUtils.getSpecificAttributeValue(entity, "availability")); + dcatMetadata.setMimeType(ngsiUtils.getSpecificAttributeValue(entity, "mediaType")); + dcatMetadata.setLicense(ngsiUtils.getSpecificAttributeValue(entity, "license")); + dcatMetadata.setDownloadURL(ngsiUtils.getSpecificAttributeValue(entity, "downloadURL")); + dcatMetadata.setByteSize(ngsiUtils.getSpecificAttributeValue(entity, "byteSize")); + dcatMetadata.setResourceRights(ngsiUtils.getSpecificAttributeValue(entity, "rights")); + dcatMetadata.setResourceDescription(ngsiUtils.getSpecificAttributeValue(entity, "description")); + dcatMetadata.setResourceName(ngsiUtils.getSpecificAttributeValue(entity, "title")); + dcatMetadata.setLicenseType(ngsiUtils.getSpecificAttributeValue(entity, "licenseType")); + + } } From 8a039daa4785463d9e2740440f365b7e584256f1 Mon Sep 17 00:00:00 2001 From: Benoit Orihuela Date: Wed, 19 Feb 2025 18:44:27 +0100 Subject: [PATCH 2/2] fix: integrate datasetTitle attribute in metadata and minor code improvements --- .../io/nifi/processors/ckan/CKANBackend.java | 135 +++++++++--------- .../io/nifi/processors/ckan/NgsiLdToCkan.java | 7 +- .../processors/ckan/ngsild/NGSIUtils.java | 12 +- .../ckan/utils/BuildDCATMetadata.java | 26 ++-- 4 files changed, 86 insertions(+), 94 deletions(-) diff --git a/nifi-ngsild-ckan-processors/src/main/java/egm/io/nifi/processors/ckan/CKANBackend.java b/nifi-ngsild-ckan-processors/src/main/java/egm/io/nifi/processors/ckan/CKANBackend.java index 0e54eea..4e01b37 100644 --- a/nifi-ngsild-ckan-processors/src/main/java/egm/io/nifi/processors/ckan/CKANBackend.java +++ b/nifi-ngsild-ckan-processors/src/main/java/egm/io/nifi/processors/ckan/CKANBackend.java @@ -40,13 +40,13 @@ public CKANBackend(String apiKey, String[] ckanHost, String ckanPort, cache = new CKANCache(ckanHost, ckanPort, ssl, apiKey); } // CKANBackendImpl - public void persist(String orgName, String pkgName, String pkgTitle, String resName, String records, DCATMetadata dcatMetadata, boolean createDataStore) + public void persist(String orgName, String pkgName, String resName, String records, DCATMetadata dcatMetadata, boolean createDataStore) throws Exception { logger.info("Going to lookup for the resource id, the cache may be updated during the process (orgName=\"{}\", " + "pkgName=\"{}\", resName=\"{}\"" , orgName, pkgName, resName); - String resId = resourceLookupOrCreateDynamicFields(orgName, pkgName, pkgTitle, resName,records, dcatMetadata,createDataStore); + String resId = resourceLookupOrCreateDynamicFields(orgName, pkgName, resName,records, dcatMetadata,createDataStore); if (resId == null) { throw new Exception("Cannot persist the data (orgName=" + orgName + ", pkgName=" + pkgName + ", resName=" + resName + ")"); @@ -72,7 +72,7 @@ public void persist(String orgName, String pkgName, String pkgTitle, String resN * @param resName The resource name to be created or lookup to * @param records Te records to be inserted and used to create the datastore fields */ - private String resourceLookupOrCreateDynamicFields(String orgName, String pkgName, String pkgTitle, String resName, String records,DCATMetadata dcatMetadata, boolean createDataStore) + private String resourceLookupOrCreateDynamicFields(String orgName, String pkgName, String resName, String records,DCATMetadata dcatMetadata, boolean createDataStore) throws Exception { if (!cache.isCachedOrg(orgName)) { logger.info("The organization was not cached nor existed in CKAN (orgName=\"{}\")", orgName); @@ -81,7 +81,7 @@ private String resourceLookupOrCreateDynamicFields(String orgName, String pkgNam cache.setOrgId(orgName, orgId); logger.info("Created new organization in CKAN (orgName=\"{}\", orgId=\"{}\")", orgName, orgId); - String pkgId = createPackage(pkgName, pkgTitle, orgId, dcatMetadata); + String pkgId = createPackage(pkgName, orgId, dcatMetadata); cache.addPkg(orgName, pkgName); cache.setPkgId(orgName, pkgName, pkgId); String resId = createResource(resName, pkgId, dcatMetadata); @@ -100,7 +100,7 @@ private String resourceLookupOrCreateDynamicFields(String orgName, String pkgNam if (!cache.isCachedPkg(orgName, pkgName)) { logger.info("The package was not cached nor existed in CKAN (orgName=\"{}\", pkgName=\"{}\")", orgName, pkgName); - String pkgId = createPackage(pkgName, pkgTitle, cache.getOrgId(orgName), dcatMetadata); + String pkgId = createPackage(pkgName, cache.getOrgId(orgName), dcatMetadata); cache.addPkg(orgName, pkgName); cache.setPkgId(orgName, pkgName, pkgId); String resId = createResource(resName, pkgId, dcatMetadata); @@ -200,11 +200,10 @@ private String createOrganization(String orgName, DCATMetadata dcatMetadata) thr /** * Creates a dataset/package within a given organization in CKAN. * @param pkgName Package to be created - * @param pkgTitle Package title * @param orgId Organization the package belongs to * @return A package identifier if the package was created or an exception if something went wrong */ - private String createPackage(String pkgName, String pkgTitle, String orgId, DCATMetadata dcatMetadata) throws Exception { + private String createPackage(String pkgName, String orgId, DCATMetadata dcatMetadata) throws Exception { // create the CKAN request JSON JsonArray extrasJsonArray = new JsonArray(); JsonArray tagsJsonArray = new JsonArray(); @@ -215,66 +214,64 @@ private String createPackage(String pkgName, String pkgTitle, String orgId, DCAT JsonObject dataJson = new JsonObject(); dataJson.addProperty("name",pkgName); dataJson.addProperty("owner_org",orgId); - dataJson.addProperty("title", pkgTitle); - if (dcatMetadata!=null){ - dataJson.addProperty("notes",dcatMetadata.getPackageDescription()); - dataJson.addProperty("version",dcatMetadata.getVersion()); - dataJson.addProperty("url",dcatMetadata.getLandingPage()); - dataJson.addProperty("visibility",dcatMetadata.getVisibility()); - - extrasJson.addProperty("key","publisher_type"); - extrasJson.addProperty("value",dcatMetadata.getOrganizationType()); - extrasJsonArray.add(extrasJson); - extrasJson=new JsonObject(); - extrasJson.addProperty("key","contact_uri"); - extrasJson.addProperty("value",dcatMetadata.getContactPoint()); - extrasJsonArray.add(extrasJson); - extrasJson=new JsonObject(); - extrasJson.addProperty("key","contact_name"); - extrasJson.addProperty("value",dcatMetadata.getContactName()); - extrasJsonArray.add(extrasJson); - extrasJson=new JsonObject(); - extrasJson.addProperty("key","contact_email"); - extrasJson.addProperty("value",dcatMetadata.getContactEmail()); - extrasJsonArray.add(extrasJson); - extrasJson=new JsonObject(); - extrasJson.addProperty("key","spatial_uri"); - extrasJson.addProperty("value",dcatMetadata.getSpatialUri()); - extrasJsonArray.add(extrasJson); - extrasJson=new JsonObject(); - extrasJson.addProperty("key","spatial"); - extrasJson.addProperty("value",dcatMetadata.getSpatialCoverage()); - extrasJsonArray.add(extrasJson); - extrasJson=new JsonObject(); - extrasJson.addProperty("key","temporal_start"); - extrasJson.addProperty("value",dcatMetadata.getTemporalStart()); - extrasJsonArray.add(extrasJson); - extrasJson=new JsonObject(); - extrasJson.addProperty("key","temporal_end"); - extrasJson.addProperty("value",dcatMetadata.getTemporalEnd()); - extrasJsonArray.add(extrasJson); - extrasJson=new JsonObject(); - extrasJson.addProperty("key","theme"); - extrasJson.addProperty("value",dcatMetadata.getThemes()); - extrasJsonArray.add(extrasJson); - extrasJson=new JsonObject(); - extrasJson.addProperty("key","access_rights"); - extrasJson.addProperty("value",dcatMetadata.getDatasetRights()); - extrasJsonArray.add(extrasJson); - - - //espacio para tags - keywords=dcatMetadata.getKeywords(); - for (String tag: keywords){ - tags=new JsonObject(); - //tags.addProperty("vocabulary_id","null"); - tags.addProperty("name",tag); - tagsJsonArray.add(tags); - } - //extrasJsonArray.add(extrasJson);} - dataJson.add("extras",extrasJsonArray); - dataJson.add("tags",tagsJsonArray); + dataJson.addProperty("title", dcatMetadata.getPackageName()); + dataJson.addProperty("notes", dcatMetadata.getPackageDescription()); + dataJson.addProperty("version",dcatMetadata.getVersion()); + dataJson.addProperty("url",dcatMetadata.getLandingPage()); + dataJson.addProperty("visibility",dcatMetadata.getVisibility()); + + extrasJson.addProperty("key","publisher_type"); + extrasJson.addProperty("value",dcatMetadata.getOrganizationType()); + extrasJsonArray.add(extrasJson); + extrasJson=new JsonObject(); + extrasJson.addProperty("key","contact_uri"); + extrasJson.addProperty("value",dcatMetadata.getContactPoint()); + extrasJsonArray.add(extrasJson); + extrasJson=new JsonObject(); + extrasJson.addProperty("key","contact_name"); + extrasJson.addProperty("value",dcatMetadata.getContactName()); + extrasJsonArray.add(extrasJson); + extrasJson=new JsonObject(); + extrasJson.addProperty("key","contact_email"); + extrasJson.addProperty("value",dcatMetadata.getContactEmail()); + extrasJsonArray.add(extrasJson); + extrasJson=new JsonObject(); + extrasJson.addProperty("key","spatial_uri"); + extrasJson.addProperty("value",dcatMetadata.getSpatialUri()); + extrasJsonArray.add(extrasJson); + extrasJson=new JsonObject(); + extrasJson.addProperty("key","spatial"); + extrasJson.addProperty("value",dcatMetadata.getSpatialCoverage()); + extrasJsonArray.add(extrasJson); + extrasJson=new JsonObject(); + extrasJson.addProperty("key","temporal_start"); + extrasJson.addProperty("value",dcatMetadata.getTemporalStart()); + extrasJsonArray.add(extrasJson); + extrasJson=new JsonObject(); + extrasJson.addProperty("key","temporal_end"); + extrasJson.addProperty("value",dcatMetadata.getTemporalEnd()); + extrasJsonArray.add(extrasJson); + extrasJson=new JsonObject(); + extrasJson.addProperty("key","theme"); + extrasJson.addProperty("value",dcatMetadata.getThemes()); + extrasJsonArray.add(extrasJson); + extrasJson=new JsonObject(); + extrasJson.addProperty("key","access_rights"); + extrasJson.addProperty("value",dcatMetadata.getDatasetRights()); + extrasJsonArray.add(extrasJson); + + + //espacio para tags + keywords=dcatMetadata.getKeywords(); + for (String tag: keywords){ + tags=new JsonObject(); + //tags.addProperty("vocabulary_id","null"); + tags.addProperty("name",tag); + tagsJsonArray.add(tags); } + //extrasJsonArray.add(extrasJson);} + dataJson.add("extras",extrasJsonArray); + dataJson.add("tags",tagsJsonArray); logger.debug("dataJson: {}",dataJson); // create the CKAN request URL String urlPath = "/api/3/action/package_create"; @@ -493,14 +490,14 @@ public String buildOrgName(String organizationName, DCATMetadata dcatMetadata) t * conventions are violated. * @return Package name */ - public String buildPkgName(String pkgTitle, DCATMetadata dcatMetadata) throws Exception { + public String buildPkgName(DCATMetadata dcatMetadata) throws Exception { String pkgName; String finalPackageName; - if (dcatMetadata != null && dcatMetadata.getPackageName() != null) { + if (dcatMetadata.getPackageName() != null) { finalPackageName = dcatMetadata.getPackageName().toLowerCase(Locale.ENGLISH); } else { - finalPackageName = pkgTitle.toLowerCase(Locale.ENGLISH); + throw new Exception("No package name found in the metadata!"); } pkgName = NGSICharsets.encodeCKAN(finalPackageName); diff --git a/nifi-ngsild-ckan-processors/src/main/java/egm/io/nifi/processors/ckan/NgsiLdToCkan.java b/nifi-ngsild-ckan-processors/src/main/java/egm/io/nifi/processors/ckan/NgsiLdToCkan.java index 3d7ffad..b735568 100644 --- a/nifi-ngsild-ckan-processors/src/main/java/egm/io/nifi/processors/ckan/NgsiLdToCkan.java +++ b/nifi-ngsild-ckan-processors/src/main/java/egm/io/nifi/processors/ckan/NgsiLdToCkan.java @@ -171,11 +171,10 @@ public void aggregate(Entity entity, long creationTime) { for (Entity entity : entities) { - // Update DCATMetadata with entity attributes + // Update DCATMetadata with Distribution entity attributes buildDCATMetadata.addMetadataFromEntity(entity, dcatMetadata); - final String pkgTitle = flowFile.getAttribute("datasetTitle"); - final String pkgName = ckanBackend.buildPkgName(pkgTitle, dcatMetadata); + final String pkgName = ckanBackend.buildPkgName(dcatMetadata); final String resName = ckanBackend.buildResName(entity, dcatMetadata); aggregator.initialize(entity); aggregator.aggregate(entity, creationTime); @@ -193,7 +192,7 @@ public void aggregate(Entity entity, long creationTime) { getLogger().info("Persisting data at NGSICKANSink: orgName=" + orgName + ", pkgName=" + pkgName + ", resName=" + resName + ", data=" + aggregation); - ckanBackend.persist(orgName, pkgName, pkgTitle, resName, aggregation, dcatMetadata,createDataStore); + ckanBackend.persist(orgName, pkgName, resName, aggregation, dcatMetadata, createDataStore); } // for } diff --git a/nifi-ngsild-ckan-processors/src/main/java/egm/io/nifi/processors/ckan/ngsild/NGSIUtils.java b/nifi-ngsild-ckan-processors/src/main/java/egm/io/nifi/processors/ckan/ngsild/NGSIUtils.java index aed487b..6c3cebe 100644 --- a/nifi-ngsild-ckan-processors/src/main/java/egm/io/nifi/processors/ckan/ngsild/NGSIUtils.java +++ b/nifi-ngsild-ckan-processors/src/main/java/egm/io/nifi/processors/ckan/ngsild/NGSIUtils.java @@ -139,16 +139,14 @@ private void addAttributeIfValid(List attributes, AttributesLD att attributes.add(attribute); } - public String getSpecificAttributeValue(Entity entity, String attributeName) { + public static String getSpecificAttributeValue(Entity entity, String attributeName) { ArrayList entityAttributes = entity.getEntityAttrsLD(); - for(AttributesLD attr : entityAttributes) { - if(attr.getAttrName().toLowerCase().equals(attributeName.toLowerCase())) { - return attr.getAttrValue(); - } + for (AttributesLD attr : entityAttributes) { + if (attr.getAttrName().equalsIgnoreCase(attributeName)) + return attr.getAttrValue(); } - logger.info("Did not find attribute " + attributeName + " in entity " + entity.getEntityId()); + logger.info("Did not find attribute {} in entity {}", attributeName, entity.getEntityId()); return null; - } } diff --git a/nifi-ngsild-ckan-processors/src/main/java/egm/io/nifi/processors/ckan/utils/BuildDCATMetadata.java b/nifi-ngsild-ckan-processors/src/main/java/egm/io/nifi/processors/ckan/utils/BuildDCATMetadata.java index 12e0a6d..4e771cc 100644 --- a/nifi-ngsild-ckan-processors/src/main/java/egm/io/nifi/processors/ckan/utils/BuildDCATMetadata.java +++ b/nifi-ngsild-ckan-processors/src/main/java/egm/io/nifi/processors/ckan/utils/BuildDCATMetadata.java @@ -13,7 +13,6 @@ import static egm.io.nifi.processors.ckan.ngsild.NGSIConstants.JSON_LD_FORMAT; public class BuildDCATMetadata { - final NGSIUtils ngsiUtils = new NGSIUtils(); public DCATMetadata getMetadataFromFlowFile(FlowFile flowFile, final ProcessSession session) { final byte[] buffer = new byte[(int) flowFile.getSize()]; @@ -28,7 +27,7 @@ public DCATMetadata getMetadataFromFlowFile(FlowFile flowFile, final ProcessSess newFlowFileAttributes.get("organizationName"), newFlowFileAttributes.get("organizationType"), newFlowFileAttributes.get("packageDescription"), - newFlowFileAttributes.get("packageName"), + newFlowFileAttributes.get("datasetTitle"), newFlowFileAttributes.get("contactPoint"), newFlowFileAttributes.get("contactName"), newFlowFileAttributes.get("contactEmail"), @@ -57,17 +56,16 @@ public DCATMetadata getMetadataFromFlowFile(FlowFile flowFile, final ProcessSess ); } - public void addMetadataFromEntity (Entity entity, DCATMetadata dcatMetadata) { - dcatMetadata.setAccessURL(ngsiUtils.getSpecificAttributeValue(entity, "accessURL")); - dcatMetadata.setAvailability(ngsiUtils.getSpecificAttributeValue(entity, "availability")); - dcatMetadata.setMimeType(ngsiUtils.getSpecificAttributeValue(entity, "mediaType")); - dcatMetadata.setLicense(ngsiUtils.getSpecificAttributeValue(entity, "license")); - dcatMetadata.setDownloadURL(ngsiUtils.getSpecificAttributeValue(entity, "downloadURL")); - dcatMetadata.setByteSize(ngsiUtils.getSpecificAttributeValue(entity, "byteSize")); - dcatMetadata.setResourceRights(ngsiUtils.getSpecificAttributeValue(entity, "rights")); - dcatMetadata.setResourceDescription(ngsiUtils.getSpecificAttributeValue(entity, "description")); - dcatMetadata.setResourceName(ngsiUtils.getSpecificAttributeValue(entity, "title")); - dcatMetadata.setLicenseType(ngsiUtils.getSpecificAttributeValue(entity, "licenseType")); - + public void addMetadataFromEntity(Entity entity, DCATMetadata dcatMetadata) { + dcatMetadata.setAccessURL(NGSIUtils.getSpecificAttributeValue(entity, "accessURL")); + dcatMetadata.setAvailability(NGSIUtils.getSpecificAttributeValue(entity, "availability")); + dcatMetadata.setMimeType(NGSIUtils.getSpecificAttributeValue(entity, "mediaType")); + dcatMetadata.setLicense(NGSIUtils.getSpecificAttributeValue(entity, "license")); + dcatMetadata.setDownloadURL(NGSIUtils.getSpecificAttributeValue(entity, "downloadURL")); + dcatMetadata.setByteSize(NGSIUtils.getSpecificAttributeValue(entity, "byteSize")); + dcatMetadata.setResourceRights(NGSIUtils.getSpecificAttributeValue(entity, "rights")); + dcatMetadata.setResourceDescription(NGSIUtils.getSpecificAttributeValue(entity, "description")); + dcatMetadata.setResourceName(NGSIUtils.getSpecificAttributeValue(entity, "title")); + dcatMetadata.setLicenseType(NGSIUtils.getSpecificAttributeValue(entity, "licenseType")); } }