diff --git a/src/main/java/com/smartharvester/service/MappingService.java b/src/main/java/com/smartharvester/service/MappingService.java index 7a58851d56c19d8bba3b35956ce6f23101822fb6..8854d53174505c69956ee0a8d78ff9902ca7b5b0 100644 --- a/src/main/java/com/smartharvester/service/MappingService.java +++ b/src/main/java/com/smartharvester/service/MappingService.java @@ -168,6 +168,14 @@ public class MappingService { } } else { for (int i = 0; i < list.size(); i++) { + if (!jsonT.has(list.get(i))) { + if (path.getDcatClass().equals("dcat:dataset")) { + datasetProperties += write(path.getProperty(), "undefined"); + } else if (path.getDcatClass().equals("dcat:distribution")) { + distributionProperties += write(path.getProperty(), "undefined"); + } + break; + } if (i < list.size() - 1) { if (jsonT.optJSONObject(list.get(i)) != null) { jsonT = jsonT.getJSONObject(list.get(i)); @@ -186,16 +194,16 @@ public class MappingService { if (isReplicable(path.getCard())) { for (int j = 0; j < jsonA.length(); j++) { if (path.getDcatClass().equals("dcat:dataset")) { - datasetProperties += write(path.getProperty(), jsonA.getString(j)); + datasetProperties += write(path.getProperty(), jsonA.optString(j)); } else if (path.getDcatClass().equals("dcat:distribution")) { - distributionProperties += write(path.getProperty(), jsonA.getString(j)); + distributionProperties += write(path.getProperty(), jsonA.optString(j)); } } } else { if (path.getDcatClass().equals("dcat:dataset")) { - datasetProperties += write(path.getProperty(), jsonA.getString(0)); + datasetProperties += write(path.getProperty(), jsonA.optString(0)); } else if (path.getDcatClass().equals("dcat:distribution")) { - distributionProperties += write(path.getProperty(), jsonA.getString(0)); + distributionProperties += write(path.getProperty(), jsonA.optString(0)); } } @@ -205,9 +213,9 @@ public class MappingService { JSONArray jsonA = jsonT.getJSONArray(list.get(list.size() - 2)); if (path.getDcatClass().equals("dcat:dataset")) { - datasetProperties += write(path.getProperty(), jsonA.getString(Integer.parseInt(list.get(i)))); + datasetProperties += write(path.getProperty(), jsonA.optString(Integer.parseInt(list.get(i)))); } else if (path.getDcatClass().equals("dcat:distribution")) { - distributionProperties += write(path.getProperty(), jsonA.getString(Integer.parseInt(list.get(i)))); + distributionProperties += write(path.getProperty(), jsonA.optString(Integer.parseInt(list.get(i)))); } break; } else if (jsonT.optString(list.get(i)) != null && jsonT.has(list.get(i))) { @@ -225,7 +233,7 @@ public class MappingService { JSONArray jsonA = jsonT.getJSONArray(key); if (isReplicable(path.getCard())) { for (int j = 0; j < jsonA.length(); j++) { - String value = jsonA.getJSONObject(j).getString(list.get(i)); + String value = jsonA.getJSONObject(j).optString(list.get(i)); if (path.getDcatClass().equals("dcat:dataset")) { datasetProperties += write(path.getProperty(), value); } else if (path.getDcatClass().equals("dcat:distribution")) { @@ -233,7 +241,7 @@ public class MappingService { } } } else { - String value = jsonA.getJSONObject(0).getString(list.get(i)); + String value = jsonA.getJSONObject(0).optString(list.get(i)); if (path.getDcatClass().equals("dcat:dataset")) { datasetProperties += write(path.getProperty(), value); } else if (path.getDcatClass().equals("dcat:distribution")) {