diff --git a/Test/org/spdx/licensexml/LicenseXmlDocumentTest.java b/Test/org/spdx/licensexml/LicenseXmlDocumentTest.java index 1bed4d3..ffb3a7f 100644 --- a/Test/org/spdx/licensexml/LicenseXmlDocumentTest.java +++ b/Test/org/spdx/licensexml/LicenseXmlDocumentTest.java @@ -49,38 +49,38 @@ public class LicenseXmlDocumentTest { static final String TEST_FILE_PATH = "TestFiles" + File.separator + "test-license.xml"; private static final String TEST_LICENSE_COMMENT = "Test note"; private static final String TEST_LICENSE_ID = "test-id"; - private static final String TEST_LICENSE_TEXT = "Test Copyright\nparagraph 1" + - "\n 1.\n List item 1\n 2.\n List item 2\n" + + private static final String TEST_LICENSE_TEXT = "Test Copyright\n\nparagraph 1" + + "\n\n 1.\n\n List item 1\n\n 2.\n\n List item 2\n\n" + "Last Paragraph Alternate Text Non matching line. Optional text"; private static final String TEST_LICENSE_NAME = "Test License"; private static final String[] TEST_LICENSE_URLS = new String[] {"http://test/url1","http://test/url2"}; private static final String TEST_LICENSE_HEADER = "Test header optional var"; private static final String TEST_LICENSE_HEADER_TEMPLATE = "Test header<> optional<> <>"; - private static final String TEST_LICENSE_TEMPLATE = "Test Copyright\nparagraph 1" + - "\n <>\n List item 1\n <>\n List item 2\n" + + private static final String TEST_LICENSE_TEMPLATE = "Test Copyright\n\nparagraph 1" + + "\n\n <>\n\n List item 1\n\n <>\n\n List item 2\n\n" + "Last Paragraph <> Non matching line.<> Optional text<>"; private static final String TEST_DEP_LICENSE_COMMENT = "Test dep note"; private static final String TEST_DEP_LICENSE_ID = "test-dep"; - private static final String TEST_DEP_LICENSE_TEXT = "Test Copyright dep\nparagraph 1d" + - "\n 1.d\n List item 1d\n 2.d\n List item 2d\n" + + private static final String TEST_DEP_LICENSE_TEXT = "Test Copyright dep\n\nparagraph 1d" + + "\n\n 1.d\n\n List item 1d\n\n 2.d\n\n List item 2d\n\n" + "Last Paragraph dep Alternate Text dep Non matching line dep. Optional text dep"; private static final String TEST_DEP_LICENSE_NAME = "Test Deprecated License"; private static final String[] TEST_DEP_LICENSE_URLS = new String[] {"http://test/url1d","http://test/url2d"}; private static final String TEST_DEP_LICENSE_HEADER = "Test header dep"; - private static final String TEST_DEP_LICENSE_TEMPLATE = "Test Copyright dep\nparagraph 1d" + - "\n <>\n List item 1d\n <>\n List item 2d\n" + + private static final String TEST_DEP_LICENSE_TEMPLATE = "Test Copyright dep\n\nparagraph 1d" + + "\n\n <>\n\n List item 1d\n\n <>\n\n List item 2d\n\n" + "Last Paragraph dep <> Non matching line dep.<> Optional text dep<>"; private static final String TEST_EXCEPTION_COMMENT = "Test note exception"; private static final String TEST_EXCEPTION_ID = "test-ex"; - private static final String TEST_EXCEPTION_TEXT = "Test Copyrighte\nparagraph 1e" + - "\n 1.e\n List item 1e\n 2.e\n List item 2e\n" + + private static final String TEST_EXCEPTION_TEXT = "Test Copyrighte\n\nparagraph 1e" + + "\n\n 1.e\n\n List item 1e\n\n 2.e\n\n List item 2e\n\n" + "Last Paragraph exc Alternate Text exc Non matching line. e Optional text exc"; private static final String TEST_EXCEPTION_NAME = "Test Exception"; private static final String[] TEST_EXCEPTION_URLS = new String[] {"http://test/url1e","http://test/url2e"}; @SuppressWarnings("unused") - private static final String TEST_EXCEPTION_TEMPLATE = "Test Copyrighte\nparagraph 1e" + + private static final String TEST_EXCEPTION_TEMPLATE = "Test Copyrighte\n\nparagraph 1e" + "\n 1.e\n List item 1e\n 2.e\n List item 2e\n" + "Last Paragraph exc <> Non matching line. e<> Optional text exc<>"; private static final String TEST_DEP_LICENSE_VERSION = "2.2"; diff --git a/src/org/spdx/licenselistpublisher/licensegenerator/LicenseTextFormatWriter.java b/src/org/spdx/licenselistpublisher/licensegenerator/LicenseTextFormatWriter.java index 0ad1ece..9302b14 100644 --- a/src/org/spdx/licenselistpublisher/licensegenerator/LicenseTextFormatWriter.java +++ b/src/org/spdx/licenselistpublisher/licensegenerator/LicenseTextFormatWriter.java @@ -21,7 +21,9 @@ import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; +import java.util.ArrayList; import java.util.Arrays; +import java.util.List; import org.spdx.rdfparser.license.LicenseException; import org.spdx.rdfparser.license.SpdxListedLicense; @@ -35,6 +37,8 @@ */ public class LicenseTextFormatWriter implements ILicenseFormatWriter { + private static final int MAX_LINE_CHARS = 80; + private static final int TYPICAL_WORD_CHARS = 8; private File textFolder; private Charset utf8 = Charset.forName("UTF-8"); @@ -69,7 +73,30 @@ public void writeLicense(SpdxListedLicense license, boolean deprecated, String d licBaseHtmlFileName = "deprecated_" + licBaseHtmlFileName; } Path textFilePath = Paths.get(textFolder.getPath(), licBaseHtmlFileName + ".txt"); - Files.write(textFilePath, Arrays.asList(license.getLicenseText().split("\\n")), utf8); + String[] lines = license.getLicenseText().split("\\n"); + List wordWrappedLines = new ArrayList(); + for (String line:lines) { + if (line.length() < MAX_LINE_CHARS) { + wordWrappedLines.add(line); + } else { + String[] words = line.split(" "); + StringBuilder currentLine = new StringBuilder(); + for (String word:words) + { + if (currentLine.length() > MAX_LINE_CHARS - TYPICAL_WORD_CHARS) { + wordWrappedLines.add(currentLine.toString()); + currentLine.setLength(0); + } else if (currentLine.length() > 0) { + currentLine.append(' '); + } + currentLine.append(word); + } + if (currentLine.length() > 0) { + wordWrappedLines.add(currentLine.toString()); + } + } + } + Files.write(textFilePath, wordWrappedLines, utf8); } @Override diff --git a/src/org/spdx/licensexml/LicenseXmlHelper.java b/src/org/spdx/licensexml/LicenseXmlHelper.java index e47e65b..b137139 100644 --- a/src/org/spdx/licensexml/LicenseXmlHelper.java +++ b/src/org/spdx/licensexml/LicenseXmlHelper.java @@ -252,6 +252,7 @@ private static void appendElementChildrenText(Element element, * @param indentCount */ private static void addNewline(StringBuilder sb, int indentCount) { + sb.append('\n'); sb.append('\n'); for (int i = 0; i < indentCount; i ++) { sb.append(INDENT_STRING);