9a78eabf820ea235dc4844b9c4499fe2d85603e6
[yangtools.git] / code-generator / binding-generator-util / src / main / java / org / opendaylight / yangtools / binding / generator / util / generated / type / builder / GeneratedTOBuilderImpl.java
1 /*\r
2  * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.\r
3  *\r
4  * This program and the accompanying materials are made available under the\r
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
6  * and is available at http://www.eclipse.org/legal/epl-v10.html\r
7  */\r
8 package org.opendaylight.yangtools.binding.generator.util.generated.type.builder;\r
9 \r
10 import java.util.ArrayList;\r
11 import java.util.List;\r
12 \r
13 import org.opendaylight.yangtools.sal.binding.model.api.GeneratedProperty;\r
14 import org.opendaylight.yangtools.sal.binding.model.api.GeneratedTransferObject;\r
15 import org.opendaylight.yangtools.sal.binding.model.api.Restrictions;\r
16 import org.opendaylight.yangtools.sal.binding.model.api.type.builder.GeneratedPropertyBuilder;\r
17 import org.opendaylight.yangtools.sal.binding.model.api.type.builder.GeneratedTOBuilder;\r
18 import org.opendaylight.yangtools.sal.binding.model.api.type.builder.MethodSignatureBuilder;\r
19 \r
20 public final class GeneratedTOBuilderImpl extends AbstractGeneratedTypeBuilder<GeneratedTOBuilder> implements\r
21         GeneratedTOBuilder {\r
22 \r
23     private GeneratedTransferObject extendsType;\r
24     private final List<GeneratedPropertyBuilder> properties = new ArrayList<>();\r
25     private final List<GeneratedPropertyBuilder> equalsProperties = new ArrayList<>();\r
26     private final List<GeneratedPropertyBuilder> hashProperties = new ArrayList<>();\r
27     private final List<GeneratedPropertyBuilder> toStringProperties = new ArrayList<>();\r
28     private boolean isUnionType = false;\r
29     private Restrictions restrictions;\r
30     private GeneratedPropertyBuilder SUID;\r
31 \r
32     public GeneratedTOBuilderImpl(String packageName, String name) {\r
33         super(packageName, name);\r
34         setAbstract(false);\r
35     }\r
36 \r
37     @Override\r
38     public GeneratedTOBuilder setExtendsType(final GeneratedTransferObject genTransObj) {\r
39         if (genTransObj == null) {\r
40             throw new IllegalArgumentException("Generated Transfer Object cannot be null!");\r
41         }\r
42         extendsType = genTransObj;\r
43         return this;\r
44     }\r
45 \r
46     /**\r
47      * Add new Method Signature definition for Generated Type Builder and\r
48      * returns Method Signature Builder for specifying all Method parameters. <br>\r
49      * Name of Method cannot be <code>null</code>, if it is <code>null</code>\r
50      * the method SHOULD throw {@link IllegalArgumentException} <br>\r
51      * By <i>Default</i> the MethodSignatureBuilder SHOULD be pre-set as\r
52      * {@link MethodSignatureBuilder#setAbstract(boolean)},\r
53      * {TypeMemberBuilder#setFinal(boolean)} and\r
54      * {TypeMemberBuilder#setAccessModifier(boolean)}\r
55      *\r
56      * @param name\r
57      *            Name of Method\r
58      * @return <code>new</code> instance of Method Signature Builder.\r
59      */\r
60     @Override\r
61     public MethodSignatureBuilder addMethod(String name) {\r
62         final MethodSignatureBuilder builder = super.addMethod(name);\r
63         builder.setAbstract(false);\r
64         return builder;\r
65     }\r
66 \r
67     @Override\r
68     public GeneratedTOBuilder addEqualsIdentity(GeneratedPropertyBuilder property) {\r
69         equalsProperties.add(property);\r
70         return this;\r
71     }\r
72 \r
73     @Override\r
74     public GeneratedTOBuilder addHashIdentity(GeneratedPropertyBuilder property) {\r
75         hashProperties.add(property);\r
76         return this;\r
77     }\r
78 \r
79     @Override\r
80     public GeneratedTOBuilder addToStringProperty(GeneratedPropertyBuilder property) {\r
81         toStringProperties.add(property);\r
82         return this;\r
83     }\r
84 \r
85     @Override\r
86     protected GeneratedTOBuilder thisInstance() {\r
87         return this;\r
88     }\r
89 \r
90     @Override\r
91     public void setRestrictions(Restrictions restrictions) {\r
92         this.restrictions = restrictions;\r
93     }\r
94 \r
95     @Override\r
96     public void setSUID(GeneratedPropertyBuilder suid) {\r
97         this.SUID = suid;\r
98     }\r
99 \r
100     @Override\r
101     public GeneratedTransferObject toInstance() {\r
102         return new GeneratedTransferObjectImpl(this);\r
103     }\r
104 \r
105     @Override\r
106     public String toString() {\r
107         StringBuilder builder = new StringBuilder();\r
108         builder.append("GeneratedTransferObject [packageName=");\r
109         builder.append(getPackageName());\r
110         builder.append(", name=");\r
111         builder.append(getName());\r
112         builder.append(", comment=");\r
113         builder.append(getComment());\r
114         builder.append(", constants=");\r
115         builder.append(getConstants());\r
116         builder.append(", enumerations=");\r
117         builder.append(getEnumerations());\r
118         builder.append(", properties=");\r
119         builder.append(properties);\r
120         builder.append(", equalsProperties=");\r
121         builder.append(equalsProperties);\r
122         builder.append(", hashCodeProperties=");\r
123         builder.append(hashProperties);\r
124         builder.append(", stringProperties=");\r
125         builder.append(toStringProperties);\r
126         builder.append(", annotations=");\r
127         builder.append(getAnnotations());\r
128         builder.append(", methods=");\r
129         builder.append(getMethodDefinitions());\r
130         builder.append("]");\r
131         return builder.toString();\r
132     }\r
133 \r
134     @Override\r
135     public void setIsUnion(boolean isUnion) {\r
136         this.isUnionType = isUnion;\r
137     }\r
138 \r
139     private static final class GeneratedTransferObjectImpl extends AbstractGeneratedType implements\r
140             GeneratedTransferObject {\r
141 \r
142         private final List<GeneratedProperty> equalsProperties;\r
143         private final List<GeneratedProperty> hashCodeProperties;\r
144         private final List<GeneratedProperty> stringProperties;\r
145         private final GeneratedTransferObject extendsType;\r
146         private final boolean isUnionType;\r
147         private final Restrictions restrictions;\r
148         private final GeneratedProperty SUID;\r
149 \r
150         public GeneratedTransferObjectImpl(GeneratedTOBuilderImpl builder) {\r
151             super(builder);\r
152             this.extendsType = builder.extendsType;\r
153             this.equalsProperties = toUnmodifiableProperties(builder.equalsProperties);\r
154             this.hashCodeProperties = toUnmodifiableProperties(builder.hashProperties);\r
155             this.stringProperties = toUnmodifiableProperties(builder.toStringProperties);\r
156             this.isUnionType = builder.isUnionType;\r
157             this.restrictions = builder.restrictions;\r
158             if (builder.SUID == null) {\r
159                 this.SUID = null;\r
160             } else {\r
161                 this.SUID = builder.SUID.toInstance(GeneratedTransferObjectImpl.this);\r
162             }\r
163         }\r
164 \r
165         @Override\r
166         public boolean isUnionType() {\r
167             return isUnionType;\r
168         }\r
169 \r
170         @Override\r
171         public GeneratedTransferObject getSuperType() {\r
172             return extendsType;\r
173         }\r
174 \r
175         @Override\r
176         public List<GeneratedProperty> getEqualsIdentifiers() {\r
177             return equalsProperties;\r
178         }\r
179 \r
180         @Override\r
181         public List<GeneratedProperty> getHashCodeIdentifiers() {\r
182             return hashCodeProperties;\r
183         }\r
184 \r
185         @Override\r
186         public List<GeneratedProperty> getToStringIdentifiers() {\r
187             return stringProperties;\r
188         }\r
189 \r
190         @Override\r
191         public Restrictions getRestrictions() {\r
192             return restrictions;\r
193         }\r
194 \r
195         @Override\r
196         public GeneratedProperty getSUID() {\r
197             return SUID;\r
198         }\r
199 \r
200         @Override\r
201         public String toString() {\r
202             StringBuilder builder = new StringBuilder();\r
203             builder.append("GeneratedTransferObject [packageName=");\r
204             builder.append(getPackageName());\r
205             builder.append(", name=");\r
206             builder.append(getName());\r
207             builder.append(", comment=");\r
208             builder.append(", annotations=");\r
209             builder.append(getAnnotations());\r
210             builder.append(getComment());\r
211             builder.append(", extends=");\r
212             builder.append(getSuperType());\r
213             builder.append(", implements=");\r
214             builder.append(getImplements());\r
215             builder.append(", enclosedTypes=");\r
216             builder.append(getEnclosedTypes());\r
217             builder.append(", constants=");\r
218             builder.append(getConstantDefinitions());\r
219             builder.append(", enumerations=");\r
220             builder.append(getEnumerations());\r
221             builder.append(", properties=");\r
222             builder.append(getProperties());\r
223             builder.append(", equalsProperties=");\r
224             builder.append(equalsProperties);\r
225             builder.append(", hashCodeProperties=");\r
226             builder.append(hashCodeProperties);\r
227             builder.append(", stringProperties=");\r
228             builder.append(stringProperties);\r
229             builder.append(", methods=");\r
230             builder.append(getMethodDefinitions());\r
231             builder.append("]");\r
232             return builder.toString();\r
233         }\r
234     }\r
235 }\r