remove obsolete dev classes

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1833217 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Andreas Beeker 2018-06-08 22:31:39 +00:00
parent 74ff20d363
commit 3245d7c809
8 changed files with 0 additions and 808 deletions

View File

@ -1,152 +0,0 @@
/* ====================================================================
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
==================================================================== */
package org.apache.poi.ooxml.dev;
import java.io.*;
import java.util.ArrayList;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.openxml4j.opc.OPCPackage;
import org.apache.poi.openxml4j.opc.PackageAccess;
import org.apache.poi.openxml4j.opc.PackagePart;
import org.apache.poi.openxml4j.opc.PackageRelationship;
import org.apache.poi.openxml4j.opc.PackageRelationshipCollection;
/**
* Prints out the contents of a OOXML container.
* Useful for seeing what parts are defined, and how
* they're all related to each other.
*/
public class OOXMLLister implements Closeable {
private final OPCPackage container;
private final PrintStream disp;
public OOXMLLister(OPCPackage container) {
this(container, System.out);
}
public OOXMLLister(OPCPackage container, PrintStream disp) {
this.container = container;
this.disp = disp;
}
/**
* Figures out how big a given PackagePart is.
*
* @param part the PackagePart
* @return the size of the PackagePart
*
* @throws IOException if the part can't be read
*/
public static long getSize(PackagePart part) throws IOException {
InputStream in = part.getInputStream();
try {
byte[] b = new byte[8192];
long size = 0;
int read = 0;
while(read > -1) {
read = in.read(b);
if(read > 0) {
size += read;
}
}
return size;
} finally {
in.close();
}
}
/**
* Displays information on all the different
* parts of the OOXML file container.
* @throws InvalidFormatException if the package relations are invalid
* @throws IOException if the package can't be read
*/
public void displayParts() throws InvalidFormatException, IOException {
ArrayList<PackagePart> parts = container.getParts();
for (PackagePart part : parts) {
disp.println(part.getPartName());
disp.println("\t" + part.getContentType());
if(! part.getPartName().toString().equals("/docProps/core.xml")) {
disp.println("\t" + getSize(part) + " bytes");
}
if(! part.isRelationshipPart()) {
disp.println("\t" + part.getRelationships().size() + " relations");
for(PackageRelationship rel : part.getRelationships()) {
displayRelation(rel, "\t ");
}
}
}
}
/**
* Displays information on all the different
* relationships between different parts
* of the OOXML file container.
*/
public void displayRelations() {
PackageRelationshipCollection rels =
container.getRelationships();
for (PackageRelationship rel : rels) {
displayRelation(rel, "");
}
}
private void displayRelation(PackageRelationship rel, String indent) {
disp.println(indent+"Relationship:");
disp.println(indent+"\tFrom: "+ rel.getSourceURI());
disp.println(indent+"\tTo: " + rel.getTargetURI());
disp.println(indent+"\tID: " + rel.getId());
disp.println(indent+"\tMode: " + rel.getTargetMode());
disp.println(indent+"\tType: " + rel.getRelationshipType());
}
@Override
public void close() throws IOException {
container.close();
}
public static void main(String[] args) throws IOException, InvalidFormatException {
if(args.length == 0) {
System.err.println("Use:");
System.err.println("\tjava OOXMLLister <filename>");
System.exit(1);
}
File f = new File(args[0]);
if(! f.exists()) {
System.err.println("Error, file not found!");
System.err.println("\t" + f);
System.exit(2);
}
OOXMLLister lister = new OOXMLLister(
OPCPackage.open(f.toString(), PackageAccess.READ)
);
try {
lister.disp.println(f + "\n");
lister.displayParts();
lister.disp.println();
lister.displayRelations();
} finally {
lister.close();
}
}
}

View File

@ -1,136 +0,0 @@
/* ====================================================================
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
==================================================================== */
package org.apache.poi.ooxml.dev;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Enumeration;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;
import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream;
import org.apache.commons.compress.archivers.zip.ZipFile;
import org.apache.poi.openxml4j.opc.internal.ZipHelper;
import org.apache.poi.openxml4j.util.ZipSecureFile;
import org.apache.poi.util.IOUtils;
import org.w3c.dom.Document;
import org.xml.sax.InputSource;
/**
* Reads a zipped OOXML file and produces a copy with the included
* pretty-printed XML files.
*
* This is useful for comparing OOXML files produced by different tools as the often
* use different formatting of the XML.
*/
public class OOXMLPrettyPrint {
private final DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
private final DocumentBuilder documentBuilder;
public OOXMLPrettyPrint() throws ParserConfigurationException {
// allow files with much lower inflation rate here as there is no risk of Zip Bomb attacks in this developer tool
ZipSecureFile.setMinInflateRatio(0.00001);
documentBuilder = documentBuilderFactory.newDocumentBuilder();
}
public static void main(String[] args) throws Exception {
if(args.length <= 1 || args.length % 2 != 0) {
System.err.println("Use:");
System.err.println("\tjava OOXMLPrettyPrint [<filename> <outfilename>] ...");
System.exit(1);
}
for(int i = 0;i < args.length;i+=2) {
File f = new File(args[i]);
if(! f.exists()) {
System.err.println("Error, file not found!");
System.err.println("\t" + f);
System.exit(2);
}
handleFile(f, new File(args[i+1]));
}
System.out.println("Done.");
}
private static void handleFile(File file, File outFile) throws
IOException, TransformerException, ParserConfigurationException {
System.out.println("Reading zip-file " + file + " and writing pretty-printed XML to " + outFile);
try (ZipSecureFile zipFile = ZipHelper.openZipFile(file)) {
try (ZipArchiveOutputStream out = new ZipArchiveOutputStream(new BufferedOutputStream(new FileOutputStream(outFile)))) {
new OOXMLPrettyPrint().handle(zipFile, out);
}
} finally {
System.out.println();
}
}
private void handle(ZipFile file, ZipArchiveOutputStream out) throws IOException, TransformerException {
Enumeration<? extends ZipArchiveEntry> entries = file.getEntries();
while(entries.hasMoreElements()) {
ZipArchiveEntry entry = entries.nextElement();
String name = entry.getName();
out.putArchiveEntry(new ZipArchiveEntry(name));
try {
if(name.endsWith(".xml") || name.endsWith(".rels")) {
Document document = documentBuilder.parse(new InputSource(file.getInputStream(entry)));
document.setXmlStandalone(true);
pretty(document, out, 2);
} else {
System.out.println("Not pretty-printing non-XML file " + name);
IOUtils.copy(file.getInputStream(entry), out);
}
} catch (Exception e) {
throw new IOException("While handling entry " + name, e);
} finally {
out.closeArchiveEntry();
}
System.out.print(".");
}
}
private static void pretty(Document document, OutputStream outputStream, int indent) throws TransformerException {
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
if (indent > 0) {
// set properties to indent the resulting XML nicely
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", Integer.toString(indent));
}
Result result = new StreamResult(outputStream);
Source source = new DOMSource(document);
transformer.transform(source, result);
}
}

View File

@ -1,110 +0,0 @@
/* ====================================================================
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
==================================================================== */
package org.apache.poi.xssf.dev;
import static org.apache.poi.ooxml.POIXMLTypeLoader.DEFAULT_XML_OPTIONS;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.Enumeration;
import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;
import org.apache.poi.openxml4j.opc.internal.ZipHelper;
import org.apache.poi.openxml4j.util.ZipSecureFile;
import org.apache.poi.ooxml.util.DocumentHelper;
import org.apache.poi.util.IOUtils;
import org.apache.xmlbeans.XmlException;
import org.apache.xmlbeans.XmlObject;
import org.apache.xmlbeans.XmlOptions;
import org.w3c.dom.Document;
/**
* Utility class which dumps the contents of a *.xlsx file into file system.
*
* @author Yegor Kozlov
*/
public final class XSSFDump {
private XSSFDump() {}
public static void main(String[] args) throws Exception {
for (String arg : args) {
System.out.println("Dumping " + arg);
try (ZipSecureFile zip = ZipHelper.openZipFile(arg)) {
dump(zip);
}
}
}
private static void createDirIfMissing(File directory) throws RuntimeException {
if (!directory.exists()) {
boolean dirWasCreated = directory.mkdir();
if (!dirWasCreated) {
throw new RuntimeException("Unable to create directory: " + directory);
}
}
}
private static void recursivelyCreateDirIfMissing(File directory) throws RuntimeException {
if (!directory.exists()) {
boolean dirsWereCreated = directory.mkdirs();
if (!dirsWereCreated) {
throw new RuntimeException("Unable to recursively create directory: " + directory);
}
}
}
public static void dump(ZipSecureFile zip) throws Exception {
String zipname = zip.getName();
int sep = zipname.lastIndexOf('.');
File root = new File(zipname.substring(0, sep));
createDirIfMissing(root);
System.out.println("Dumping to directory " + root);
Enumeration<? extends ZipArchiveEntry> en = zip.getEntries();
while (en.hasMoreElements()) {
ZipArchiveEntry entry = en.nextElement();
String name = entry.getName();
int idx = name.lastIndexOf('/');
if (idx != -1) {
File bs = new File(root, name.substring(0, idx));
recursivelyCreateDirIfMissing(bs);
}
File f = new File(root, entry.getName());
try (final OutputStream out = new FileOutputStream(f)) {
if (entry.getName().endsWith(".xml") || entry.getName().endsWith(".vml") || entry.getName().endsWith(".rels")) {
try {
Document doc = DocumentHelper.readDocument(zip.getInputStream(entry));
XmlObject xml = XmlObject.Factory.parse(doc, DEFAULT_XML_OPTIONS);
XmlOptions options = new XmlOptions();
options.setSavePrettyPrint();
xml.save(out, options);
} catch (XmlException e) {
System.err.println("Failed to parse " + entry.getName() + ", dumping raw content");
IOUtils.copy(zip.getInputStream(entry), out);
}
} else {
IOUtils.copy(zip.getInputStream(entry), out);
}
}
}
}
}

View File

@ -1,47 +0,0 @@
/* ====================================================================
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
==================================================================== */
package org.apache.poi.xssf.dev;
import org.apache.poi.openxml4j.opc.OPCPackage;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileOutputStream;
/**
* Utility which loads a SpreadsheetML file and saves it back.
* This is a handy tool to investigate read-write round trip safety.
*
* @author Yegor Kozlov
*/
public final class XSSFSave {
public static void main(String[] args) throws Exception {
for (int i = 0; i < args.length; i++) {
OPCPackage pkg = OPCPackage.open(args[i]);
XSSFWorkbook wb = new XSSFWorkbook(pkg);
int sep = args[i].lastIndexOf('.');
String outfile = args[i].substring(0, sep) + "-save.xls" + (wb.isMacroEnabled() ? "m" : "x");
FileOutputStream out = new FileOutputStream(outfile);
wb.write(out);
out.close();
pkg.close();
}
}
}

View File

@ -1,72 +0,0 @@
/* ====================================================================
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
2012 - Alfresco Software, Ltd.
Alfresco Software has modified source of this file
The details of changes as svn diff can be found in svn at location root/projects/3rd-party/src
==================================================================== */
package org.apache.poi.dev;
import java.io.*;
import org.apache.poi.ooxml.dev.OOXMLLister;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.openxml4j.opc.OPCPackage;
import org.apache.poi.openxml4j.opc.PackageAccess;
import org.apache.poi.util.NullOutputStream;
import org.apache.poi.xssf.XSSFTestDataSamples;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
public class TestOOXMLLister {
private static PrintStream SYSTEM_OUT;
@BeforeClass
public static void setUp() throws UnsupportedEncodingException {
SYSTEM_OUT = System.out;
System.setOut(new PrintStream(new OutputStream() {
@Override
public void write(int b) throws IOException {
}
}, false, "UTF-8"));
}
@AfterClass
public static void tearDown() {
System.setOut(SYSTEM_OUT);
}
@Test
public void testMain() throws IOException, InvalidFormatException {
File file = XSSFTestDataSamples.getSampleFile("Formatting.xlsx");
OOXMLLister.main(new String[] {file.getAbsolutePath()});
}
@Test
public void testWithPrintStream() throws IOException, InvalidFormatException {
File file = XSSFTestDataSamples.getSampleFile("Formatting.xlsx");
PrintStream nullStream = new PrintStream(new NullOutputStream(), true, "UTF-8");
OPCPackage opc = OPCPackage.open(file.getAbsolutePath(), PackageAccess.READ);
OOXMLLister lister = new OOXMLLister(opc, nullStream);
lister.displayParts();
lister.displayRelations();
lister.close();
opc.close();
nullStream.close();
}
}

View File

@ -1,70 +0,0 @@
/* ====================================================================
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
2012 - Alfresco Software, Ltd.
Alfresco Software has modified source of this file
The details of changes as svn diff can be found in svn at location root/projects/3rd-party/src
==================================================================== */
package org.apache.poi.dev;
import org.apache.poi.ooxml.dev.OOXMLPrettyPrint;
import org.apache.poi.util.TempFile;
import org.apache.poi.xssf.XSSFTestDataSamples;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import java.io.*;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
public class TestOOXMLPrettyPrint {
private static PrintStream SYSTEM_OUT;
@BeforeClass
public static void setUp() throws UnsupportedEncodingException {
SYSTEM_OUT = System.out;
System.setOut(new PrintStream(new OutputStream() {
@Override
public void write(int b) throws IOException {
}
}, false, "UTF-8"));
}
@AfterClass
public static void tearDown() {
System.setOut(SYSTEM_OUT);
}
@Test
public void testMain() throws Exception {
File file = XSSFTestDataSamples.getSampleFile("Formatting.xlsx");
File outFile = TempFile.createTempFile("Formatting", "-pretty.xlsx");
assertTrue(outFile.delete());
assertFalse(outFile.exists());
OOXMLPrettyPrint.main(new String[] {
file.getAbsolutePath(), outFile.getAbsolutePath()
});
assertTrue(outFile.exists());
assertTrue(outFile.delete());
}
}

View File

@ -1,61 +0,0 @@
/* ====================================================================
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
2012 - Alfresco Software, Ltd.
Alfresco Software has modified source of this file
The details of changes as svn diff can be found in svn at location root/projects/3rd-party/src
==================================================================== */
package org.apache.poi.dev;
import org.apache.poi.util.TempFile;
import org.junit.Ignore;
import org.junit.Test;
import java.io.File;
public class TestRecordGenerator {
@Ignore("Could not get this to run, probably the dev-application does not work any more at all")
@Test
public void testNotEnoughArgs() throws Exception {
RecordGenerator.main(new String[] {});
}
@Ignore("Could not get this to run, probably the dev-application does not work any more at all")
@Test
public void testMainRecords() throws Exception {
File dir = TempFile.createTempDirectory("TestRecordGenerator");
RecordGenerator.main(new String[] {
"src/records/definitions/",
"src/records/styles/",
dir.getAbsolutePath(),
dir.getAbsolutePath(),
});
}
@Ignore("Could not get this to run, probably the dev-application does not work any more at all")
@Test
public void testMainTypes() throws Exception {
File dir = TempFile.createTempDirectory("TestRecordGenerator");
RecordGenerator.main(new String[] {
"src/types/definitions/",
"src/types/styles/",
dir.getAbsolutePath(),
dir.getAbsolutePath(),
});
}
}

View File

@ -1,160 +0,0 @@
/* ====================================================================
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
==================================================================== */
package org.apache.poi.dev;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Locale;
import java.util.Properties;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Result;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import org.apache.poi.util.XMLHelper;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
/**
* Description of the Class
*
*@author andy
*@since May 10, 2002
*/
public class RecordGenerator {
/**
* The main program for the RecordGenerator class
*
*@param args The command line arguments
*@exception Exception Description of the Exception
*/
public static void main(String[] args)
throws Exception {
// Force load so that we don't start generating records and realise this hasn't compiled yet.
Class.forName("org.apache.poi.generator.FieldIterator");
if (args.length != 4) {
System.out.println("Usage:");
System.out.println(" java org.apache.poi.hssf.util.RecordGenerator RECORD_DEFINTIONS RECORD_STYLES DEST_SRC_PATH TEST_SRC_PATH");
} else {
generateRecords(args[0], args[1], args[2], args[3]);
}
}
private static void generateRecords(String defintionsDir, String recordStyleDir, String destSrcPathDir, String testSrcPathDir)
throws Exception {
File definitionsFiles[] = new File(defintionsDir).listFiles();
if (definitionsFiles == null) {
System.err.println(defintionsDir+" is not a directory.");
return;
}
for (File file : definitionsFiles) {
if (file.isFile() &&
(file.getName().endsWith("_record.xml") ||
file.getName().endsWith("_type.xml")
)
) {
// Get record name and package
DocumentBuilderFactory factory = XMLHelper.getDocumentBuilderFactory();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(file);
Element record = document.getDocumentElement();
String extendstg = record.getElementsByTagName("extends").item(0).getFirstChild().getNodeValue();
String suffix = record.getElementsByTagName("suffix").item(0).getFirstChild().getNodeValue();
String recordName = record.getAttributes().getNamedItem("name").getNodeValue();
String packageName = record.getAttributes().getNamedItem("package").getNodeValue();
packageName = packageName.replace('.', '/');
// Generate record
String destinationPath = destSrcPathDir + "/" + packageName;
File destinationPathFile = new File(destinationPath);
if(!destinationPathFile.mkdirs()) {
throw new IOException("Could not create directory " + destinationPathFile);
} else {
System.out.println("Created destination directory: " + destinationPath);
}
String destinationFilepath = destinationPath + "/" + recordName + suffix + ".java";
transform(file, new File(destinationFilepath),
new File(recordStyleDir + "/" + extendstg.toLowerCase(Locale.ROOT) + ".xsl"));
System.out.println("Generated " + suffix + ": " + destinationFilepath);
// Generate test (if not already generated)
destinationPath = testSrcPathDir + "/" + packageName;
destinationPathFile = new File(destinationPath);
if(!destinationPathFile.mkdirs()) {
throw new IOException("Could not create directory " + destinationPathFile);
} else {
System.out.println("Created destination directory: " + destinationPath);
}
destinationFilepath = destinationPath + "/Test" + recordName + suffix + ".java";
if (!new File(destinationFilepath).exists()) {
String temp = (recordStyleDir + "/" + extendstg.toLowerCase(Locale.ROOT) + "_test.xsl");
transform(file, new File(destinationFilepath), new File(temp));
System.out.println("Generated test: " + destinationFilepath);
} else {
System.out.println("Skipped test generation: " + destinationFilepath);
}
}
}
}
/**
* <p>Executes an XSL transformation. This process transforms an XML input
* file into a text output file controlled by an XSLT specification.</p>
*
* @param in the XML input file
* @param out the text output file
* @param xslt the XSLT specification, i.e. an XSL style sheet
* @throws FileNotFoundException
* @throws TransformerException
*/
private static void transform(final File in, final File out, final File xslt)
throws FileNotFoundException, TransformerException
{
final StreamSource ss = new StreamSource(xslt);
final TransformerFactory tf = TransformerFactory.newInstance();
final Transformer t;
try
{
t = tf.newTransformer(ss);
}
catch (TransformerException ex)
{
System.err.println("Error compiling XSL style sheet " + xslt);
throw ex;
}
final Properties p = new Properties();
p.setProperty(OutputKeys.METHOD, "text");
t.setOutputProperties(p);
final Result result = new StreamResult(out);
t.transform(new StreamSource(in), result);
}
}