r674 - in branches/jrst-docutils-jython: doxia-module-jrst/src/main/java/org/nuiton/jrst jrst/src/main/java/org/nuiton/jrst jrst/src/test/java/org/nuiton/jrst jrst/src/test/java/org/nuiton/jrst/bugs
Author: jpages Date: 2012-05-24 18:06:42 +0200 (Thu, 24 May 2012) New Revision: 674 Url: http://nuiton.org/repositories/revision/jrst/674 Log: Nettoyage dans la classe JRST : suppression de m?\195?\169thodes inutiles, renommage, restructuration du code,... Modified: branches/jrst-docutils-jython/doxia-module-jrst/src/main/java/org/nuiton/jrst/JrstParser.java branches/jrst-docutils-jython/jrst/src/main/java/org/nuiton/jrst/JRST.java branches/jrst-docutils-jython/jrst/src/test/java/org/nuiton/jrst/JRSTTest.java branches/jrst-docutils-jython/jrst/src/test/java/org/nuiton/jrst/bugs/AdmonitionTest.java branches/jrst-docutils-jython/jrst/src/test/java/org/nuiton/jrst/bugs/DirectiveTest.java branches/jrst-docutils-jython/jrst/src/test/java/org/nuiton/jrst/bugs/OptionTest.java branches/jrst-docutils-jython/jrst/src/test/java/org/nuiton/jrst/bugs/TableTest.java branches/jrst-docutils-jython/jrst/src/test/java/org/nuiton/jrst/bugs/TextTest.java branches/jrst-docutils-jython/jrst/src/test/java/org/nuiton/jrst/bugs/TitlesTest.java Modified: branches/jrst-docutils-jython/doxia-module-jrst/src/main/java/org/nuiton/jrst/JrstParser.java =================================================================== --- branches/jrst-docutils-jython/doxia-module-jrst/src/main/java/org/nuiton/jrst/JrstParser.java 2012-05-24 14:00:52 UTC (rev 673) +++ branches/jrst-docutils-jython/doxia-module-jrst/src/main/java/org/nuiton/jrst/JrstParser.java 2012-05-24 16:06:42 UTC (rev 674) @@ -54,26 +54,14 @@ public void parse(Reader source, Sink sink) throws ParseException { try { + // Write the source in a file to use it with JRST File sourceFile = File.createTempFile("source",".rst"); FileWriter fileWriter = new FileWriter(sourceFile); IOUtil.copy(source, fileWriter); - Document doc = JRST.generateXML(sourceFile); - // Apply xsl on rst RST Document - JRSTGenerator gen = new JRSTGenerator(); - String xsl = JRST.rst2xdoc; - URL stylesheet = Resource.getURL(xsl); - if (stylesheet == null) { - throw new FileNotFoundException("Can't find stylesheet: " - + xsl); - } + // Generation of the xml file + Document doc = JRST.generateXML(sourceFile, JRST.TYPE_XDOC); - // add entity resolver - gen.setUriResolver(new JRSTResourceResolver(xsl)); - - // do transformation - doc = gen.transform(doc, stylesheet); - // Give xsl result to XDoc parser Reader reader = new StringReader(doc.asXML()); super.parse(reader, sink); Modified: branches/jrst-docutils-jython/jrst/src/main/java/org/nuiton/jrst/JRST.java =================================================================== --- branches/jrst-docutils-jython/jrst/src/main/java/org/nuiton/jrst/JRST.java 2012-05-24 14:00:52 UTC (rev 673) +++ branches/jrst-docutils-jython/jrst/src/main/java/org/nuiton/jrst/JRST.java 2012-05-24 16:06:42 UTC (rev 674) @@ -225,7 +225,7 @@ overwrite = Overwrite.ALLTIME; } - generate(xslList, inputFile, ouputFile, overwrite); + generateDocutils(xslList, inputFile, ouputFile, overwrite); } private static String[] askOption() throws SecurityException, @@ -249,7 +249,7 @@ } /** - * Interface graphique. + * Graphical user interface * * @return * @throws SecurityException @@ -263,14 +263,17 @@ return graph.getCmd(); } - public static void generate(String outputType, File fileIn, - File fileOut, Overwrite overwrite) throws Exception { - generate(outputType, fileIn, fileOut, UTF_8, overwrite); - } - - public static void generate(String outputType, File fileIn, - File fileOut, String outputEncoding, Overwrite overwrite) throws Exception { - + /** + * Transforms a Restructured Text (ReST) file to another type ( html, xdoc, pdf, etc... ) + * + * @param outputType The type of the output file ( html, xdoc, pdf, etc... ) + * @param fileIn The restructured text input file (rst) + * @param fileOut The output file + * @param overwrite The rule to overwrite file (NEVER, IFNEWER or ALLTIME ) + * @throws Exception + */ + public static void generateDocutils(String outputType, File fileIn, + File fileOut, Overwrite overwrite) throws Exception { if (fileOut != null && fileOut.exists() && (overwrite == Overwrite.NEVER || (overwrite == Overwrite.IFNEWER && FileUtil @@ -281,121 +284,68 @@ // Out OutputStream outputStream = new FileOutputStream(fileOut); - // Generate - Document result = generateDocument(outputType, fileIn); + // Generate XML + Document doc = generateXML(fileIn, outputType); // generation PDF if (outputType.equals("pdf")) { - - try { - // Creation of the document builder - DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); - builder.setEntityResolver(result.getEntityResolver()); - - // We must redifine our own DocumentInputSource because of the visibility - MyDocumentInputSource source = new MyDocumentInputSource(result); - org.w3c.dom.Document doc = builder.parse(source); - - ITextRenderer renderer = new ITextRenderer(); - - // Settings to resolve paths with the JRST User Agent - String absolutePath = fileIn.getParentFile().getAbsolutePath(); - JRSTUserAgent jrstUserAgent = new JRSTUserAgent(absolutePath); - jrstUserAgent.setBaseURL(absolutePath); - renderer.getSharedContext().setUserAgentCallback(jrstUserAgent); - jrstUserAgent.setSharedContext(renderer.getSharedContext()); - - // Generation of the pdf file - renderer.setDocument(doc, null); - renderer.layout(); - renderer.createPDF(outputStream); - } catch (Exception eee) { - log.error("Failed to write PDF", eee); - } finally { - outputStream.close(); - } - + generatePdf(doc, fileIn, outputStream); } else { - // If the output file type si not "pdf", we can write in the final file - OutputStreamWriter writer = null; - try { - writer = new OutputStreamWriter(outputStream, outputEncoding); - - // write generated document - writer.write(result.asXML()); - }catch (Exception eee) { - log.error("Failed to write " + outputType + " file", eee); - } finally { - if (writer != null) { - writer.close(); - } - } - + generateFile(doc, outputStream); } } } - /** - * - * @param outputType - * @param in - * @throws Exception - */ - public static String generate(String outputType, String in) throws Exception { - File inFile = File.createTempFile("in", "rst"); - FileUtil.writeString(inFile, in); - return generateString(outputType, inFile); - } - /** - * - * @param outputType - * @param in - * @throws Exception - */ - public static Writer generate(String outputType, File in) throws Exception { - StringWriter writer = new StringWriter(); - writer.write(generateString(outputType,in)); - return writer; - } + public static void generateFile(Document doc, OutputStream outputStream) throws IOException { + // If the output file type si not "pdf", we can write in the final file + OutputStreamWriter writer = null; + try { + writer = new OutputStreamWriter(outputStream, UTF_8); - - /** - * - * @param outputType - * @param in - * @throws Exception - */ - public static StringBuffer generate(String outputType, StringBuffer in) throws Exception { - return new StringBuffer(generate(outputType, in.toString())); + // write generated document + writer.write(doc.asXML()); + }catch (Exception eee) { + log.error("Failed to write file", eee); + } finally { + if (writer != null) { + writer.close(); + } + } } - /** - * - * @param outputType - * @param in - * @throws Exception - */ - public static String generateString(String outputType, File in) throws Exception { + public static void generatePdf(Document result, File fileIn, OutputStream outputStream) throws Exception { + try { + // Creation of the document builder + DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); + builder.setEntityResolver(result.getEntityResolver()); - return generateDocument(outputType, in).asXML(); - } - /** - * - * @param outputType - * @param in - * @throws Exception - */ - public static Document generateDocument(String outputType, File in) throws Exception { + // We must redifine our own DocumentInputSource because of the visibility + MyDocumentInputSource source = new MyDocumentInputSource(result); + org.w3c.dom.Document doc = builder.parse(source); - Document doc = generateXML(in); + ITextRenderer renderer = new ITextRenderer(); - // Sortie vers rst - doc = applyXsls(doc, outputType); - return doc; + // Settings to resolve paths with the JRST User Agent + String absolutePath = fileIn.getParentFile().getAbsolutePath(); + JRSTUserAgent jrstUserAgent = new JRSTUserAgent(absolutePath); + jrstUserAgent.setBaseURL(absolutePath); + renderer.getSharedContext().setUserAgentCallback(jrstUserAgent); + jrstUserAgent.setSharedContext(renderer.getSharedContext()); + + // Generation of the pdf file + renderer.setDocument(doc, null); + renderer.layout(); + renderer.createPDF(outputStream); + } catch (Exception eee) { + log.error("Failed to write PDF", eee); + } finally { + outputStream.close(); + } } + private static Document applyXsls(Document doc, String xslListOrOutType) throws IOException, TransformerException { // search xsl file list to apply @@ -429,14 +379,17 @@ return doc; } - public static Document generateXML(File in) throws Exception { - // RST to XML transformation in a StringWriter + public static Document generateXML(File in, String outputType) throws Exception { ByteArrayOutputStream out = null; Document doc = null; try { + // Transformation to XML out = new ByteArrayOutputStream(); doc = generateDocument(TYPE_XML, in, out); + + // Application of xsl stylesheets + doc = applyXsls(doc, outputType); } finally { if ( out != null) { out.close(); @@ -456,7 +409,7 @@ */ URL resource = JRST.class.getResource("/" + DOCUTILS_LAUNCHER); String docutilsPath = resource.getPath() - .replaceAll(DOCUTILS_LAUNCHER, ""); + .replaceAll(DOCUTILS_LAUNCHER, ""); docutilsPath = docutilsPath.replaceAll(BANG, ""); docutilsPath = docutilsPath.replaceAll(FILE_PREFIX, ""); @@ -483,8 +436,8 @@ // Cleans the python interpreter to avoid problems if they are multiple execution of this method interp.cleanup(); + // Transforms the output stream to a document String xmlString = new String(out.toByteArray(), UTF_8); - Document doc = null; try { doc = DocumentHelper.parseText(xmlString); Modified: branches/jrst-docutils-jython/jrst/src/test/java/org/nuiton/jrst/JRSTTest.java =================================================================== --- branches/jrst-docutils-jython/jrst/src/test/java/org/nuiton/jrst/JRSTTest.java 2012-05-24 14:00:52 UTC (rev 673) +++ branches/jrst-docutils-jython/jrst/src/test/java/org/nuiton/jrst/JRSTTest.java 2012-05-24 16:06:42 UTC (rev 674) @@ -114,7 +114,7 @@ File out = new File(testWorkDir, "toRst1-out.rst"); - JRST.generate(JRST.TYPE_RST, in, out, JRST.Overwrite.ALLTIME); + JRST.generateDocutils(JRST.TYPE_RST, in, out, JRST.Overwrite.ALLTIME); List<?> readLines = FileUtils.readLines(out); log.info(OUT_LINES); @@ -133,6 +133,6 @@ File in = getTestFile("text.rst"); File out = getOutputTestFile("jrst-RstToXml.xml"); - JRST.generate(JRST.TYPE_XML, in, out, JRST.Overwrite.ALLTIME); + JRST.generateDocutils(JRST.TYPE_XML, in, out, JRST.Overwrite.ALLTIME); } } \ No newline at end of file Modified: branches/jrst-docutils-jython/jrst/src/test/java/org/nuiton/jrst/bugs/AdmonitionTest.java =================================================================== --- branches/jrst-docutils-jython/jrst/src/test/java/org/nuiton/jrst/bugs/AdmonitionTest.java 2012-05-24 14:00:52 UTC (rev 673) +++ branches/jrst-docutils-jython/jrst/src/test/java/org/nuiton/jrst/bugs/AdmonitionTest.java 2012-05-24 16:06:42 UTC (rev 674) @@ -56,7 +56,7 @@ File in = getBugTestFile("testAdminitionInList1787.rst"); File out = getOutputTestFile("jrst-testAdminitionInList1787.html"); // out.deleteOnExit(); - JRST.generate(JRST.TYPE_HTML, in, out, JRST.Overwrite.ALLTIME); + JRST.generateDocutils(JRST.TYPE_HTML, in, out, JRST.Overwrite.ALLTIME); String content = FileUtils.readFileToString(out, JRST.UTF_8); // Must contains <div class="note"> Modified: branches/jrst-docutils-jython/jrst/src/test/java/org/nuiton/jrst/bugs/DirectiveTest.java =================================================================== --- branches/jrst-docutils-jython/jrst/src/test/java/org/nuiton/jrst/bugs/DirectiveTest.java 2012-05-24 14:00:52 UTC (rev 673) +++ branches/jrst-docutils-jython/jrst/src/test/java/org/nuiton/jrst/bugs/DirectiveTest.java 2012-05-24 16:06:42 UTC (rev 674) @@ -54,7 +54,7 @@ File in = getBugTestFile("testImages21.rst"); File out = getOutputTestFile("jrst-testImages.html"); // out.deleteOnExit(); - JRST.generate(JRST.TYPE_HTML, in, out, JRST.Overwrite.ALLTIME); + JRST.generateDocutils(JRST.TYPE_HTML, in, out, JRST.Overwrite.ALLTIME); String content = FileUtils.readFileToString(out, JRST.UTF_8); assertTrue(content.indexOf("alt=\"alternate text\"") > 0); @@ -76,7 +76,7 @@ File in = getBugTestFile("testContent877.rst"); File out = getOutputTestFile("jrst-testContent.html"); // out.deleteOnExit(); - JRST.generate(JRST.TYPE_HTML, in, out, JRST.Overwrite.ALLTIME); + JRST.generateDocutils(JRST.TYPE_HTML, in, out, JRST.Overwrite.ALLTIME); String content = FileUtils.readFileToString(out, JRST.UTF_8); assertTrue(content.indexOf("Table des matières") > 0); @@ -92,7 +92,7 @@ File in = getBugTestFile("testContents.rst"); File out = getOutputTestFile("jrst-testContents.html"); // out.deleteOnExit(); - JRST.generate(JRST.TYPE_HTML, in, out, JRST.Overwrite.ALLTIME); + JRST.generateDocutils(JRST.TYPE_HTML, in, out, JRST.Overwrite.ALLTIME); String content = FileUtils.readFileToString(out, JRST.UTF_8); assertTrue(content.indexOf("<b>") > 0); Modified: branches/jrst-docutils-jython/jrst/src/test/java/org/nuiton/jrst/bugs/OptionTest.java =================================================================== --- branches/jrst-docutils-jython/jrst/src/test/java/org/nuiton/jrst/bugs/OptionTest.java 2012-05-24 14:00:52 UTC (rev 673) +++ branches/jrst-docutils-jython/jrst/src/test/java/org/nuiton/jrst/bugs/OptionTest.java 2012-05-24 16:06:42 UTC (rev 674) @@ -52,7 +52,7 @@ public void testOptionArgumentSizeInList() throws Exception { File in = getBugTestFile("testOptionArgumentSize1788.rst"); File out = getOutputTestFile("jrst-testOptionArgumentSize1788.html"); - JRST.generate(JRST.TYPE_HTML, in, out, JRST.Overwrite.ALLTIME); + JRST.generateDocutils(JRST.TYPE_HTML, in, out, JRST.Overwrite.ALLTIME); } } Modified: branches/jrst-docutils-jython/jrst/src/test/java/org/nuiton/jrst/bugs/TableTest.java =================================================================== --- branches/jrst-docutils-jython/jrst/src/test/java/org/nuiton/jrst/bugs/TableTest.java 2012-05-24 14:00:52 UTC (rev 673) +++ branches/jrst-docutils-jython/jrst/src/test/java/org/nuiton/jrst/bugs/TableTest.java 2012-05-24 16:06:42 UTC (rev 674) @@ -54,7 +54,7 @@ File in = getBugTestFile("testTable1290.rst"); File out = getOutputTestFile("jrst-tables.html"); // out.deleteOnExit(); - JRST.generate(JRST.TYPE_HTML, in, out, JRST.Overwrite.ALLTIME); + JRST.generateDocutils(JRST.TYPE_HTML, in, out, JRST.Overwrite.ALLTIME); String content = FileUtils.readFileToString(out, JRST.UTF_8); assertTrue(content.indexOf("Annee|Trait|Espece") > 0); @@ -71,7 +71,7 @@ File in = getBugTestFile("testTable1375.rst"); File out = getOutputTestFile("jrst-tables.html"); // out.deleteOnExit(); - JRST.generate(JRST.TYPE_HTML, in, out, JRST.Overwrite.ALLTIME); + JRST.generateDocutils(JRST.TYPE_HTML, in, out, JRST.Overwrite.ALLTIME); String content = FileUtils.readFileToString(out, JRST.UTF_8); assertTrue(content.indexOf("<em>légérs</em>") > 0); Modified: branches/jrst-docutils-jython/jrst/src/test/java/org/nuiton/jrst/bugs/TextTest.java =================================================================== --- branches/jrst-docutils-jython/jrst/src/test/java/org/nuiton/jrst/bugs/TextTest.java 2012-05-24 14:00:52 UTC (rev 673) +++ branches/jrst-docutils-jython/jrst/src/test/java/org/nuiton/jrst/bugs/TextTest.java 2012-05-24 16:06:42 UTC (rev 674) @@ -56,7 +56,7 @@ File in = getBugTestFile("testLinks.rst"); File out = getOutputTestFile("jrst-testLinks.html"); - JRST.generate(JRST.TYPE_HTML, in, out, JRST.Overwrite.ALLTIME); + JRST.generateDocutils(JRST.TYPE_HTML, in, out, JRST.Overwrite.ALLTIME); String content = FileUtils.readFileToString(out, JRST.UTF_8); assertTrue(content.indexOf("href=\"http://labs.libre-entreprise.org/tracker/?atid=113&group_id=8&func=browse\"") > 0); @@ -75,7 +75,7 @@ File in = getBugTestFile("testLinks1380.rst"); File out = getOutputTestFile("jrst-testLinks.html"); - JRST.generate(JRST.TYPE_HTML, in, out, JRST.Overwrite.ALLTIME); + JRST.generateDocutils(JRST.TYPE_HTML, in, out, JRST.Overwrite.ALLTIME); String content = FileUtils.readFileToString(out, JRST.UTF_8); assertTrue(content.indexOf("nuiton's forge") > 0); @@ -93,7 +93,7 @@ File in = getBugTestFile("testTab1378.rst"); File out = getOutputTestFile("jrst-testTab1378.html"); - JRST.generate(JRST.TYPE_HTML, in, out, JRST.Overwrite.ALLTIME); + JRST.generateDocutils(JRST.TYPE_HTML, in, out, JRST.Overwrite.ALLTIME); String content = FileUtils.readFileToString(out, JRST.UTF_8); Pattern pattern = Pattern.compile(".*<blockquote>.*du bla bla \u00E9l\u00E9mentaire.*</blockquote>.*", Pattern.DOTALL); @@ -110,7 +110,7 @@ File in = getBugTestFile("testOptionsList644.rst"); File out = getOutputTestFile("jrst-testOptionList644.html"); - JRST.generate(JRST.TYPE_HTML, in, out, JRST.Overwrite.ALLTIME); + JRST.generateDocutils(JRST.TYPE_HTML, in, out, JRST.Overwrite.ALLTIME); String content = FileUtils.readFileToString(out, JRST.UTF_8); assertTrue(content.indexOf("<span class=\"option\">-a</span>") > 0); @@ -133,7 +133,7 @@ File in = getBugTestFile("testLinks.rst"); File out = getOutputTestFile("jrst-testLinks.html"); - JRST.generate(JRST.TYPE_HTML, in, out, JRST.Overwrite.ALLTIME); + JRST.generateDocutils(JRST.TYPE_HTML, in, out, JRST.Overwrite.ALLTIME); String content = FileUtils.readFileToString(out, JRST.UTF_8); assertTrue(content.indexOf("echapement de lien1_") > 0); @@ -148,7 +148,7 @@ File in = getBugTestFile("testEmbeddedURIs.rst"); File out = getOutputTestFile("jrst-testEmbeddedURIs.html"); - JRST.generate(JRST.TYPE_HTML, in, out, JRST.Overwrite.ALLTIME); + JRST.generateDocutils(JRST.TYPE_HTML, in, out, JRST.Overwrite.ALLTIME); String content = FileUtils.readFileToString(out, JRST.UTF_8); assertTrue(content.contains("href=\"http://www.python.org\"")); Modified: branches/jrst-docutils-jython/jrst/src/test/java/org/nuiton/jrst/bugs/TitlesTest.java =================================================================== --- branches/jrst-docutils-jython/jrst/src/test/java/org/nuiton/jrst/bugs/TitlesTest.java 2012-05-24 14:00:52 UTC (rev 673) +++ branches/jrst-docutils-jython/jrst/src/test/java/org/nuiton/jrst/bugs/TitlesTest.java 2012-05-24 16:06:42 UTC (rev 674) @@ -54,7 +54,7 @@ File in = new File("src/test/resources/bugs/testNoSubtitle.rst"); File out = File.createTempFile("jrst-RstToHtml2", ".html"); // out.deleteOnExit(); - JRST.generate(JRST.TYPE_HTML, in, out, JRST.Overwrite.ALLTIME); + JRST.generateDocutils(JRST.TYPE_HTML, in, out, JRST.Overwrite.ALLTIME); } /** @@ -68,7 +68,7 @@ File in = new File("src/test/resources/bugs/testNoContentSubtitles.rst"); File out = File.createTempFile("jrst-testNoContentSubtitles", ".html"); // out.deleteOnExit(); - JRST.generate(JRST.TYPE_HTML, in, out, JRST.Overwrite.ALLTIME); + JRST.generateDocutils(JRST.TYPE_HTML, in, out, JRST.Overwrite.ALLTIME); String content = FileUtils.readFileToString(out, JRST.UTF_8); Assert.assertTrue(content.indexOf("<h2>Prérequis</h2>") > 0);
participants (1)
-
jpages@users.nuiton.org