📄 doctranslet.java
字号:
FileOutputStream out = new FileOutputStream(targetFile.getAbsolutePath()); IOToolkit.copyStream(in, out); in.close(); out.close(); } else { reporter.printNotice("Generating " + fileInfo.getComment() + "..."); String pathToRoot = ""; for (File file = getParentFile(targetFile); !equalsFile(file, targetDirectory); file = getParentFile(file)) { pathToRoot += "../"; } StreamResult out = new StreamResult(targetFile.getAbsolutePath()); StreamSource in = new StreamSource(new File(xmlSourceDirectory, "index.xml").getAbsolutePath()); URL resource = new URL(mainResourceURL, fileInfo.getSheet()); StreamSource xsltSource = new StreamSource(resource.toExternalForm()); if (null != fileInfo.getInfo()) { parameters.put("gjdoc.outputfile.info", fileInfo.getInfo()); } parameters.put("gjdoc.pathtoroot", pathToRoot); Transformer transformer; transformer = (Transformer)transformerMap.get(xsltSource.getSystemId()); if (null == transformer) { transformer = transformerFactory.newTransformer(xsltSource); if (cacheXSLTSheets) { transformerMap.put(xsltSource.getSystemId(), transformer); } } transformer.clearParameters(); for (Iterator pit = parameters.keySet().iterator(); pit.hasNext(); ) { String key = (String)pit.next(); String value = (String)parameters.get(key); transformer.setParameter(key, value); } transformer.setErrorListener(this); DocErrorReporterOutputStream errorReporterOut = new DocErrorReporterOutputStream(reporter); System.setErr(new PrintStream(errorReporterOut)); transformer.transform(in, out); errorReporterOut.flush(); } } } catch (MalformedURLException e) { throw new DocTransletException(e); } catch (TransformerFactoryConfigurationError e) { throw new DocTransletException(e); } catch (TransformerException e) { throw new DocTransletException(e.getMessageAndLocation(), e); } catch (IOException e) { throw new DocTransletException(e); } finally { System.setErr(err); } } private List getOutputFileList(URL resource, File xmlSourceDirectory, Map parameters) throws DocTransletException { try { List result; OutputStream out = new ByteArrayOutputStream(); DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder(); Document document = documentBuilder.newDocument(); DOMResult domResult = new DOMResult(document); { StreamSource source = new StreamSource(resource.toExternalForm()); TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = (Transformer)transformerFactory.newTransformer(source); transformer.clearParameters(); for (Iterator pit = parameters.keySet().iterator(); pit.hasNext(); ) { String key = (String)pit.next(); String value = (String)parameters.get(key); transformer.setParameter(key, value); } transformer.transform(new StreamSource(new File(xmlSourceDirectory, "index.xml").getAbsolutePath()), domResult); } { NodeList nodeList = document.getElementsByTagName("outputfile"); result = new ArrayList(nodeList.getLength()); for (int i=0; i<nodeList.getLength(); ++i) { Element elem = (Element)nodeList.item(i); String name = getTextContent(elem.getElementsByTagName("name").item(0)); String source = (null != elem.getElementsByTagName("source").item(0)) ? getTextContent(elem.getElementsByTagName("source").item(0)) : null; String sheet = (null != elem.getElementsByTagName("sheet").item(0)) ? getTextContent(elem.getElementsByTagName("sheet").item(0)) : null; String comment = getTextContent(elem.getElementsByTagName("comment").item(0)); String info = null; if (elem.getElementsByTagName("info").getLength() > 0) { if (null != elem.getElementsByTagName("info").item(0).getFirstChild()) { info = getTextContent(elem.getElementsByTagName("info").item(0)); } else { info = ""; } } result.add(new OutputFileInfo(name, source, sheet, comment, info)); } } return result; } catch (TransformerFactoryConfigurationError e) { throw new DocTransletException(e); } catch (TransformerException e) { throw new DocTransletException(e.getMessageAndLocation(), e); } catch (ParserConfigurationException e) { throw new DocTransletException(e); } } private String getTextContent(Node elem) { StringBuffer result = new StringBuffer(); NodeList children = elem.getChildNodes(); for (int i=0; i<children.getLength(); ++i) { Node item = children.item(i); if (null != item) { String value = item.getNodeValue(); if (null != value) { result.append(value); } } } return result.toString(); } public void setOptions(DocTransletOptions options) { this.options = options; } public static DocTranslet fromClasspath(String resourceName) throws DocTransletConfigurationException { return new DocTranslet(resourceName, DocTranslet.class.getClassLoader()); } public static DocTranslet fromJarFile(File jarFile) throws DocTransletConfigurationException { try { JarFile inputJarFile = new JarFile(jarFile, false, JarFile.OPEN_READ); Manifest manifest = inputJarFile.getManifest(); if (null == manifest) { throw new DocTransletConfigurationException("Jar file '" + jarFile + "' doesn't contain a manifest."); } Attributes mainAttributes = manifest.getMainAttributes(); String docTransletMainEntry = mainAttributes.getValue("doctranslet-main-entry"); if (null == docTransletMainEntry) { throw new DocTransletConfigurationException("Manifest in Jar file '" + jarFile + "' doesn't contain a doctranslet-main-entry specification."); } return new DocTranslet(docTransletMainEntry, new JarClassLoader(inputJarFile)); } catch (IOException e) { throw new DocTransletConfigurationException(e); } } private static String xsltBoolean(boolean b) { return b ? "1" : ""; } public void error (TransformerException exception) throws TransformerException { throw exception; } public void fatalError (TransformerException exception) throws TransformerException { throw exception; } public void warning (TransformerException exception) throws TransformerException { System.err.println("WWW: " + exception.getMessage()); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -