Update the API generation code and code generation sample
[controller.git] / opendaylight / sal / yang-prototype / code-generator / binding-java-api-generator / src / main / java / org / opendaylight / controller / sal / java / api / generator / GeneratorJavaFile.java
index 794487594e528359837146e29eead76bd911288d..f2388fef19a04c044eaa8f541bd120ca9193f95c 100644 (file)
@@ -13,21 +13,35 @@ import java.io.FileWriter;
 import java.io.IOException;\r
 import java.io.Writer;\r
 import java.util.ArrayList;\r
+import java.util.HashSet;\r
 import java.util.List;\r
 import java.util.Set;\r
 \r
 import org.opendaylight.controller.sal.binding.model.api.CodeGenerator;\r
+import org.opendaylight.controller.sal.binding.model.api.GeneratedTransferObject;\r
 import org.opendaylight.controller.sal.binding.model.api.GeneratedType;\r
 \r
 public class GeneratorJavaFile {\r
 \r
-    private final CodeGenerator codeGenerator;\r
+    private final CodeGenerator interfaceGenerator;\r
+    private final CompositeKeyGenerator classGenerator;\r
     private final Set<GeneratedType> types;\r
+    private final Set<GeneratedTransferObject> genTransferObjects;\r
 \r
-    public GeneratorJavaFile(CodeGenerator codeGenerator,\r
-            Set<GeneratedType> types) {\r
-        this.codeGenerator = codeGenerator;\r
+    public GeneratorJavaFile(final CodeGenerator codeGenerator,\r
+            final Set<GeneratedType> types) {\r
+        this.interfaceGenerator = codeGenerator;\r
         this.types = types;\r
+        this.genTransferObjects = new HashSet<GeneratedTransferObject>();\r
+        classGenerator = new CompositeKeyGenerator();\r
+    }\r
+\r
+    public GeneratorJavaFile(final Set<GeneratedType> types,\r
+            final Set<GeneratedTransferObject> genTransferObjects) {\r
+        this.interfaceGenerator = new InterfaceGenerator();\r
+        this.classGenerator = new CompositeKeyGenerator();\r
+        this.types = types;\r
+        this.genTransferObjects = genTransferObjects;\r
     }\r
 \r
     public boolean generateToFile() {\r
@@ -53,7 +67,36 @@ public class GeneratorJavaFile {
                     file.createNewFile();\r
                     fw = new FileWriter(file);\r
                     bw = new BufferedWriter(fw);\r
-                    Writer writer = codeGenerator.generate(type);\r
+                    Writer writer = interfaceGenerator.generate(type);\r
+                    bw.write(writer.toString());\r
+\r
+                    if (bw != null) {\r
+                        try {\r
+                            bw.close();\r
+                        } catch (IOException e) {\r
+                            // TODO: log?\r
+                        }\r
+                    }\r
+                }\r
+            }\r
+            for (GeneratedTransferObject transferObject : genTransferObjects) {\r
+                String parentPath = generateParentPath(path,\r
+                        transferObject.getPackageName());\r
+\r
+                File file = new File(parentPath, transferObject.getName() + ".java");\r
+                File parent = file.getParentFile();\r
+                if (!parent.exists()) {\r
+                    parent.mkdirs();\r
+                }\r
+\r
+                if (!file.exists()) {\r
+                    FileWriter fw = null;\r
+                    BufferedWriter bw = null;\r
+\r
+                    file.createNewFile();\r
+                    fw = new FileWriter(file);\r
+                    bw = new BufferedWriter(fw);\r
+                    Writer writer = classGenerator.generate(transferObject);\r
                     bw.write(writer.toString());\r
 \r
                     if (bw != null) {\r