]> source.dussan.org Git - poi.git/commitdiff
moved Record Generator
authorAndrew C. Oliver <acoliver@apache.org>
Sun, 17 Mar 2002 00:12:13 +0000 (00:12 +0000)
committerAndrew C. Oliver <acoliver@apache.org>
Sun, 17 Mar 2002 00:12:13 +0000 (00:12 +0000)
git-svn-id: https://svn.apache.org/repos/asf/jakarta/poi/trunk@352232 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/poi/dev/RecordGenerator.java [new file with mode: 0644]

diff --git a/src/java/org/apache/poi/dev/RecordGenerator.java b/src/java/org/apache/poi/dev/RecordGenerator.java
new file mode 100644 (file)
index 0000000..4c7a3da
--- /dev/null
@@ -0,0 +1,145 @@
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2002 The Apache Software Foundation.  All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ *    if any, must include the following acknowledgment:
+ *       "This product includes software developed by the
+ *        Apache Software Foundation (http://www.apache.org/)."
+ *    Alternately, this acknowledgment may appear in the software itself,
+ *    if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ *    "Apache POI" must not be used to endorse or promote products
+ *    derived from this software without prior written permission. For
+ *    written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ *    "Apache POI", nor may "Apache" appear in their name, without
+ *    prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+package org.apache.poi.dev;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
+import org.w3c.dom.Node;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import java.io.File;
+
+public class RecordGenerator
+{
+    public static void main(String[] args)
+        throws Exception
+    {
+        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 definitionsFile = new File(defintionsDir);
+
+        for (int i = 0; i < definitionsFile.listFiles().length; i++)
+        {
+            File file = definitionsFile.listFiles()[i];
+            if (file.isFile() && 
+                (file.getName().endsWith("_record.xml") ||
+                 file.getName().endsWith("_type.xml")
+                )
+               )
+            {
+                System.out.println(file.getAbsolutePath());
+                // Get record name and package
+                DocumentBuilderFactory factory =
+                        DocumentBuilderFactory.newInstance();
+                DocumentBuilder builder = factory.newDocumentBuilder();
+                Document document = builder.parse(file);
+                Element record = document.getDocumentElement();
+                String extendstg = record.getElementsByTagName("extends").item(0).getFirstChild().getNodeValue();
+                System.out.println("extends" + record.getElementsByTagName("extends").getLength());
+                System.out.println("extends" + record.getElementsByTagName("extends").item(0).toString());
+                String suffix = record.getElementsByTagName("suffix").item(0).getFirstChild().getNodeValue();
+                System.out.println("suffix" + record.getElementsByTagName("suffix").getLength());
+                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);
+                destinationPathFile.mkdirs();
+                String destinationFilepath = destinationPath + "/" + recordName + suffix+".java";
+                String args[] = new String [] { "-in", file.getAbsolutePath(), "-xsl", recordStyleDir + "/" + extendstg.toLowerCase() + ".xsl",
+                                                "-out", destinationFilepath,
+                                                "-TEXT"};
+                org.apache.xalan.xslt.Process.main( args );
+                System.out.println("Generated record: " + destinationFilepath);
+
+                // Generate test (if not already generated)
+                destinationPath = testSrcPathDir + "/" + packageName ;
+                destinationPathFile = new File(destinationPath);
+                destinationPathFile.mkdirs();
+                destinationFilepath = destinationPath + "/Test" + recordName + suffix+".java";
+                if (new File(destinationFilepath).exists() == false)
+                {
+                String temp = (recordStyleDir + "/" + extendstg.toLowerCase() + "_test.xsl");
+                    args = new String [] { "-in", file.getAbsolutePath(), "-xsl",
+                                           temp,
+                                                    "-out", destinationFilepath,
+                                                    "-TEXT"};
+                    org.apache.xalan.xslt.Process.main( args );
+                    System.out.println("Generated test: " + destinationFilepath);
+                }
+                else
+                {
+                    System.out.println("Skipped test generation: " + destinationFilepath);
+                }
+            }
+        }
+    }
+}