public static File getModuleOutputDir(File outputDir, JavaCodeGen vdmCodGen, GeneratedModule generatedClass) { File moduleOutputDir = outputDir; String javaPackage = vdmCodGen.getJavaSettings().getJavaRootPackage(); if (generatedClass.getIrNode() instanceof SClassDeclIR) { javaPackage = ((SClassDeclIR) generatedClass.getIrNode()).getPackage(); } else if (generatedClass.getIrNode() instanceof AInterfaceDeclIR) { javaPackage = ((AInterfaceDeclIR) generatedClass.getIrNode()).getPackage(); } else { log.error("Expected IR node of " + generatedClass.getName() + " to be a class or interface declaration at this point. Got: " + generatedClass.getIrNode()); return null; } if (JavaCodeGenUtil.isValidJavaPackage(javaPackage)) { String packageFolderPath = JavaCodeGenUtil.getFolderFromJavaRootPackage(javaPackage); moduleOutputDir = new File(outputDir, packageFolderPath); } return moduleOutputDir; } }
public void genJavaSourceFile(File root, GeneratedModule generatedModule) { File moduleOutputDir = JavaCodeGenUtil.getModuleOutputDir(root, this, generatedModule); if (moduleOutputDir == null) { return; } if (generatedModule != null && generatedModule.canBeGenerated() && !generatedModule.hasMergeErrors()) { String javaFileName; org.overture.codegen.ir.INode irNode = generatedModule.getIrNode(); if(irNode instanceof SClassDeclIR) { // The class may have been renamed, hence different form the original name SClassDeclIR clazz = (SClassDeclIR) irNode; javaFileName = clazz.getName(); } else { javaFileName = generatedModule.getName(); } javaFileName += IJavaConstants.JAVA_FILE_EXTENSION; emitCode(moduleOutputDir, javaFileName, generatedModule.getContent()); } }