79ba1ac175992c258a35d02694af476e89f3189d
[yangtools.git] / code-generator / binding-java-api-generator / src / main / java / org / opendaylight / yangtools / sal / java / api / generator / BuilderGenerator.java
1 package org.opendaylight.yangtools.sal.java.api.generator;\r
2 \r
3 import java.io.IOException;\r
4 import java.io.StringWriter;\r
5 import java.io.Writer;\r
6 \r
7 import org.opendaylight.yangtools.binding.generator.util.Types;\r
8 import org.opendaylight.yangtools.sal.java.api.generator.BuilderTemplate;\r
9 import org.opendaylight.yangtools.sal.binding.model.api.CodeGenerator;\r
10 import org.opendaylight.yangtools.sal.binding.model.api.GeneratedTransferObject;\r
11 import org.opendaylight.yangtools.sal.binding.model.api.GeneratedType;\r
12 import org.opendaylight.yangtools.sal.binding.model.api.Type;\r
13 import org.opendaylight.yangtools.yang.binding.DataObject;\r
14 \r
15 public final class BuilderGenerator extends AbstractCodeGenerator {\r
16 \r
17     public static final String FILE_NAME_SUFFIX = "Builder";\r
18 \r
19     @Override\r
20     public Writer generate(Type type) throws IOException {\r
21         final Writer writer = new StringWriter();\r
22         if (type instanceof GeneratedType  && isAcceptable((GeneratedType )type)) {\r
23             final GeneratedType genType = (GeneratedType) type;\r
24             final BuilderTemplate template = new BuilderTemplate(genType);\r
25             writer.write(template.generate().toString());\r
26         }\r
27         return writer;\r
28     }\r
29 \r
30     public boolean isAcceptable(Type type) {\r
31         return super.isAcceptable(type) && type instanceof GeneratedType \r
32         && ((GeneratedType )type).getImplements().contains(Types.typeForClass(DataObject.class));\r
33     }\r
34 \r
35 }\r