From b634d8cd30b0dc075cae2ec919d3e176f2f7841e Mon Sep 17 00:00:00 2001 From: Gary O'Neall Date: Thu, 12 Apr 2018 14:17:32 -0500 Subject: [PATCH] Add JSON-LD format to website Signed-off-by: Gary O'Neall --- .../LicenseRdfFormatWriter.java | 2 +- .../SpdxWebsiteFormatWriter.java | 23 ++++++++++++++++++- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/org/spdx/licenselistpublisher/licensegenerator/LicenseRdfFormatWriter.java b/src/org/spdx/licenselistpublisher/licensegenerator/LicenseRdfFormatWriter.java index 7bf124e..f15bf39 100644 --- a/src/org/spdx/licenselistpublisher/licensegenerator/LicenseRdfFormatWriter.java +++ b/src/org/spdx/licenselistpublisher/licensegenerator/LicenseRdfFormatWriter.java @@ -149,7 +149,7 @@ private static void writeRdf(IModelContainer container, File rdfXml, File rdfTur * @param format Jena RDF format * @throws LicenseGeneratorException */ - private static void writeRdf(IModelContainer container, String fileName, String format) throws LicenseGeneratorException { + public static void writeRdf(IModelContainer container, String fileName, String format) throws LicenseGeneratorException { File outFile = new File(fileName); if (!outFile.exists()) { try { diff --git a/src/org/spdx/licenselistpublisher/licensegenerator/SpdxWebsiteFormatWriter.java b/src/org/spdx/licenselistpublisher/licensegenerator/SpdxWebsiteFormatWriter.java index 2b9b5d0..54465a2 100644 --- a/src/org/spdx/licenselistpublisher/licensegenerator/SpdxWebsiteFormatWriter.java +++ b/src/org/spdx/licenselistpublisher/licensegenerator/SpdxWebsiteFormatWriter.java @@ -27,9 +27,12 @@ import org.spdx.html.LicenseJSONFile; import org.spdx.html.LicenseTOCHTMLFile; import org.spdx.html.LicenseTOCJSONFile; +import org.spdx.rdfparser.InvalidSPDXAnalysisException; +import org.spdx.rdfparser.license.AnyLicenseInfo; import org.spdx.rdfparser.license.LicenseException; import org.spdx.rdfparser.license.SpdxListedLicense; import org.spdx.spdxspreadsheet.SPDXLicenseSpreadsheet.DeprecatedLicenseInfo; +import org.spdx.licenselistpublisher.LicenseContainer; import org.spdx.licenselistpublisher.LicenseGeneratorException; import com.github.mustachejava.MustacheException; @@ -224,6 +227,15 @@ public void writeLicense(SpdxListedLicense license, boolean deprecated, String d } else { tableOfContentsHTML.addLicense(license, licHTMLReference); } + // JSON-LD format + LicenseContainer onlyThisLicense = new LicenseContainer(); + AnyLicenseInfo licenseClone = license.clone(); + try { + licenseClone.createResource(onlyThisLicense); + } catch (InvalidSPDXAnalysisException e) { + throw new LicenseGeneratorException("SPDX Analysis error cloning license: "+e.getMessage(),e); + } + LicenseRdfFormatWriter.writeRdf(onlyThisLicense, websiteFolder.getPath() + File.separator + licBaseHtmlFileName + ".jsonld", "JSON-LD"); } /* (non-Javadoc) @@ -243,7 +255,7 @@ public void writeToC() throws IOException { @Override public void writeException(LicenseException exception, boolean deprecated, String deprecatedVersion) - throws IOException, InvalidLicenseTemplateException { + throws IOException, InvalidLicenseTemplateException, LicenseGeneratorException { ExceptionHtml exceptionHtml = new ExceptionHtml(exception); String exceptionHtmlFileName = LicenseHtmlFormatWriter.formLicenseHTMLFileName(exception.getLicenseExceptionId()); String exceptionHTMLReference = "./"+exceptionHtmlFileName + ".html"; @@ -257,5 +269,14 @@ public void writeException(LicenseException exception, boolean deprecated, Strin exceptionJson.setException(exception, deprecated); File exceptionJsonFile = new File(websiteFolder.getPath() + File.separator + exceptionJsonFileName); exceptionJson.writeToFile(exceptionJsonFile); + // JSON-LD format + LicenseException exceptionClone = exception.clone(); + LicenseContainer onlyThisException = new LicenseContainer(); + try { + exceptionClone.createResource(onlyThisException); + } catch (InvalidSPDXAnalysisException e) { + throw new LicenseGeneratorException("SPDX Analysis error cloning exception: "+e.getMessage(),e); + } + LicenseRdfFormatWriter.writeRdf(onlyThisException, websiteFolder.getPath() + File.separator + exceptionHtmlFileName + ".jsonld", "JSON-LD"); } }