diff --git a/src/main/java/de/landsh/opendata/csw2dcat/MDMetadata2Dataset.java b/src/main/java/de/landsh/opendata/csw2dcat/MDMetadata2Dataset.java index 73150f5f166a355fceeb4ef8299fca3afd81062c..5684e53222f71b44aca75311c823a6ae9bb651f3 100644 --- a/src/main/java/de/landsh/opendata/csw2dcat/MDMetadata2Dataset.java +++ b/src/main/java/de/landsh/opendata/csw2dcat/MDMetadata2Dataset.java @@ -543,34 +543,41 @@ public class MDMetadata2Dataset { private void addLicenseInformation(Resource resource, List<Node> otherLegalConstraints) { final JSONObject licenseInformation = findLicenseInformation(otherLegalConstraints); - + if (licenseInformation != null) { resource.addLiteral(DCATAPde.licenseAttributionByText, licenseInformation.getString("quelle")); + if (licenseInformation.has("url")) { - // Some publishers specify the licence as the URL and not the id. String licenseURL = licenseInformation.getString("url"); + if (licenseURL.startsWith("http://dcat-ap.de/def/licenses/")) { - resource.addProperty(DCTerms.license, model.createResource(licenseInformation.getString("url"))); + resource.addProperty(DCTerms.license, model.createResource(licenseURL)); } else { - final JSONObject license = url2license.get(licenseURL); - if (license != null && license.has("uri")) { - resource.addProperty(DCTerms.license, model.createResource(license.getString("uri"))); - } else { - log.info("Unknown license: {}", licenseURL); - } + final JSONObject license = url2license.get(licenseURL); + + if (license != null && license.has("uri")) { + resource.addProperty(DCTerms.license, model.createResource(license.getString("uri"))); + } else { + log.info("Unknown license: {}", licenseURL); + handleUnknownLicense(resource, licenseInformation.getString("id")); + } } } else { - String licenseId = licenseInformation.getString("id"); - try { - licenseId = URLEncoder.encode(licenseId, "UTF-8"); - } catch (UnsupportedEncodingException e) { - log.info("Unable to encode licenseId: {}", e); - } - resource.addProperty(DCTerms.license, model.createResource("http://dcat-ap.de/def/licenses/" + licenseId)); + handleUnknownLicense(resource, licenseInformation.getString("id")); } } } - + + private void handleUnknownLicense(Resource resource, String licenseId) { + try { + licenseId = URLEncoder.encode(licenseId, "UTF-8"); + resource.addProperty(DCTerms.license, model.createResource("http://dcat-ap.de/def/licenses/" + licenseId)); + log.info("Falling back to: {}", licenseId); + } catch (UnsupportedEncodingException e) { + log.info("Unable to encode licenseId: {}", e); + } + } + private Resource guessFormat(String url) { final String lowerCaseURL = url.toLowerCase(); if (lowerCaseURL.contains("service=wms")) {