Added builder generation for augmentations
[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 org.opendaylight.yangtools.sal.binding.model.api.CodeGenerator;\r
4 import org.opendaylight.yangtools.sal.binding.model.api.GeneratedTransferObject;\r
5 import org.opendaylight.yangtools.sal.binding.model.api.GeneratedType;\r
6 import org.opendaylight.yangtools.sal.binding.model.api.Type;\r
7 import org.opendaylight.yangtools.yang.binding.Augmentable;\r
8 import org.opendaylight.yangtools.yang.binding.Augmentation;\r
9 import org.opendaylight.yangtools.yang.binding.DataObject;\r
10 \r
11 public final class BuilderGenerator implements CodeGenerator {\r
12 \r
13     public static final String BUILDER = "Builder";\r
14 \r
15     @Override\r
16     public boolean isAcceptable(Type type) {\r
17         if (type instanceof GeneratedType && !(type instanceof GeneratedTransferObject)) {\r
18             for (Type t : ((GeneratedType) type).getImplements()) {\r
19                 // "rpc" and "grouping" elements do not implement Augmentable\r
20                 if (t.getFullyQualifiedName().equals(Augmentable.class.getName())) {\r
21                     return true;\r
22                 } else if (t.getFullyQualifiedName().equals(Augmentation.class.getName())) {\r
23                     return true;\r
24                 }\r
25                 \r
26                 \r
27             }\r
28         }\r
29         return false;\r
30     }\r
31 \r
32     @Override\r
33     public String generate(Type type) {\r
34         if (type instanceof GeneratedType && !(type instanceof GeneratedTransferObject)) {\r
35             final GeneratedType genType = (GeneratedType) type;\r
36             final BuilderTemplate template = new BuilderTemplate(genType);\r
37             return template.generate();\r
38         }\r
39         return "";\r
40     }\r
41 \r
42     @Override\r
43     public String getUnitName(Type type) {\r
44         return type.getName() + BUILDER;\r
45     }\r
46 \r
47 }\r