1
54
55 package org.apache.poi.dev;
56
57 import org.w3c.dom.Document;
58 import org.w3c.dom.Element;
59
60 import javax.xml.parsers.DocumentBuilder;
61 import javax.xml.parsers.DocumentBuilderFactory;
62 import java.io.File;
63
64 public class RecordGenerator
65 {
66 public static void main(String[] args)
67 throws Exception
68 {
69
70 Class.forName("org.apache.poi.generator.FieldIterator");
71
72 if (args.length != 4)
73 {
74 System.out.println("Usage:");
75 System.out.println(" java org.apache.poi.hssf.util.RecordGenerator RECORD_DEFINTIONS RECORD_STYLES DEST_SRC_PATH TEST_SRC_PATH");
76 } else
77 {
78 generateRecords(args[0], args[1], args[2], args[3]);
79 }
80 }
81
82 private static void generateRecords(String defintionsDir, String recordStyleDir, String destSrcPathDir, String testSrcPathDir)
83 throws Exception
84 {
85 File definitionsFile = new File(defintionsDir);
86
87 for (int i = 0; i < definitionsFile.listFiles().length; i++)
88 {
89 File file = definitionsFile.listFiles()[i];
90 if (file.isFile() &&
91 (file.getName().endsWith("_record.xml") ||
92 file.getName().endsWith("_type.xml")
93 )
94 )
95 {
96
97 DocumentBuilderFactory factory =
98 DocumentBuilderFactory.newInstance();
99 DocumentBuilder builder = factory.newDocumentBuilder();
100 Document document = builder.parse(file);
101 Element record = document.getDocumentElement();
102 String extendstg = record.getElementsByTagName("extends").item(0).getFirstChild().getNodeValue();
103 String suffix = record.getElementsByTagName("suffix").item(0).getFirstChild().getNodeValue();
104 String recordName = record.getAttributes().getNamedItem("name").getNodeValue();
105 String packageName = record.getAttributes().getNamedItem("package").getNodeValue();
106 packageName = packageName.replace('.', '/');
107
108
109 String destinationPath = destSrcPathDir + "/" + packageName;
110 File destinationPathFile = new File(destinationPath);
111 destinationPathFile.mkdirs();
112 String destinationFilepath = destinationPath + "/" + recordName + suffix + ".java";
113 String args[] = new String[]{"-in", file.getAbsolutePath(), "-xsl", recordStyleDir + "/" + extendstg.toLowerCase() + ".xsl",
114 "-out", destinationFilepath,
115 "-TEXT"};
116
117 org.apache.xalan.xslt.Process.main(args);
118 System.out.println("Generated " + suffix + ": " + destinationFilepath);
119
120
121 destinationPath = testSrcPathDir + "/" + packageName;
122 destinationPathFile = new File(destinationPath);
123 destinationPathFile.mkdirs();
124 destinationFilepath = destinationPath + "/Test" + recordName + suffix + ".java";
125 if (new File(destinationFilepath).exists() == false)
126 {
127 String temp = (recordStyleDir + "/" + extendstg.toLowerCase() + "_test.xsl");
128 args = new String[]{"-in", file.getAbsolutePath(), "-xsl",
129 temp,
130 "-out", destinationFilepath,
131 "-TEXT"};
132 org.apache.xalan.xslt.Process.main(args);
133 System.out.println("Generated test: " + destinationFilepath);
134 } else
135 {
136 System.out.println("Skipped test generation: " + destinationFilepath);
137 }
138 }
139 }
140 }
141 }
142