private void generateComponentClasses(Task task) throws ParserConfigurationException, SAXException, IOException, TransformerFactoryConfigurationError, TransformerException { logInfo(task.getName() + ": generating component classes"); String outputDirectory = task.getOutputBaseDirectory() + "/" + task.getMessageDirectory() + "/component/"; Document document = getSpecification(task); List<String> componentNames = getNames(document.getDocumentElement(), "components/component"); if (componentNames.size() > 0) { writePackageDocumentation(outputDirectory, "Message component classes"); } Transformer transformer = createTransformer(task, "MessageSubclass.xsl"); for (String componentName : componentNames) { logDebug("generating component class: " + componentName); Map<String, String> parameters = new HashMap<>(); parameters.put("itemName", componentName); parameters.put("baseClass", "quickfix.MessageComponent"); parameters.put("subpackage", ".component"); parameters.put("fieldPackage", task.getFieldPackage()); parameters.put("messagePackage", task.getMessagePackage()); parameters.put("orderedFields", Boolean.toString(task.isOrderedFields())); parameters.put(XSLPARAM_SERIAL_UID, SERIAL_UID_STR); generateCodeFile( task, document, parameters, outputDirectory + componentName + ".java", transformer); } }
private void generateFieldClasses(Task task) throws ParserConfigurationException, SAXException, IOException { String outputDirectory = task.getOutputBaseDirectory() + "/" + task.getFieldDirectory() + "/"; logInfo(task.getName() + ": generating field classes in " + outputDirectory); writePackageDocumentation(outputDirectory, "FIX field definitions for " + task.getName()); Document document = getSpecification(task); List<String> fieldNames = getNames(document.getDocumentElement(), "fields/field"); try { Transformer transformer = createTransformer(task, "Fields.xsl"); for (String fieldName : fieldNames) { String outputFile = outputDirectory + fieldName + ".java"; if (!new File(outputFile).exists()) { logDebug("field: " + fieldName); Map<String, String> parameters = new HashMap<>(); parameters.put("fieldName", fieldName); parameters.put("fieldPackage", task.getFieldPackage()); if (task.isDecimalGenerated()) { parameters.put("decimalType", "java.math.BigDecimal"); parameters.put("decimalConverter", "Decimal"); } parameters.put(XSLPARAM_SERIAL_UID, SERIAL_UID_STR); generateCodeFile(task, document, parameters, outputFile, transformer); } } } catch (Exception e) { logError("error while generating field classes", e); } }
private void generateClassCode(Task task, String className, Map<String, String> parameters) throws ParserConfigurationException, SAXException, IOException, TransformerFactoryConfigurationError, TransformerException { logDebug("generating " + className + " for " + task.getName()); if (parameters == null) { parameters = new HashMap<>(); } parameters.put("messagePackage", task.getMessagePackage()); parameters.put("fieldPackage", task.getFieldPackage()); Document document = getSpecification(task); generateCodeFile( task, document, parameters, task.getOutputBaseDirectory() + "/" + task.getMessageDirectory() + "/" + className + ".java", createTransformer(task, className + ".xsl")); }