Added NotificationListener interfaces
[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 org.opendaylight.yangtools.sal.binding.model.api.*;\r
11 import org.opendaylight.yangtools.sal.binding.model.api.type.builder.*;\r
12 \r
13 import java.util.ArrayList;\r
14 import java.util.List;\r
15 \r
16 public final class GeneratedTOBuilderImpl extends AbstractGeneratedTypeBuilder<GeneratedTOBuilder> implements GeneratedTOBuilder {\r
17 \r
18     private GeneratedTransferObject extendsType;\r
19     private final List<GeneratedPropertyBuilder> properties = new ArrayList<>();\r
20     private final List<GeneratedPropertyBuilder> equalsProperties = new ArrayList<>();\r
21     private final List<GeneratedPropertyBuilder> hashProperties = new ArrayList<>();\r
22     private final List<GeneratedPropertyBuilder> toStringProperties = new ArrayList<>();\r
23     private boolean isUnionType = false;\r
24 \r
25     public GeneratedTOBuilderImpl(String packageName, String name) {\r
26         super(packageName, name);\r
27         setAbstract(false);\r
28     }\r
29 \r
30     @Override\r
31     public GeneratedTOBuilder setExtendsType(final GeneratedTransferObject genTransObj) {\r
32         if (genTransObj == null) {\r
33             throw new IllegalArgumentException("Generated Transfer Object cannot be null!");\r
34         }\r
35         extendsType = genTransObj;\r
36         return this;\r
37     }\r
38 \r
39 \r
40 \r
41     /**\r
42      * Add new Method Signature definition for Generated Type Builder and\r
43      * returns Method Signature Builder for specifying all Method parameters. <br>\r
44      * Name of Method cannot be <code>null</code>, if it is <code>null</code>\r
45      * the method SHOULD throw {@link IllegalArgumentException} <br>\r
46      * By <i>Default</i> the MethodSignatureBuilder SHOULD be pre-set as\r
47      * {@link MethodSignatureBuilder#setAbstract(false)},\r
48      * {@link MethodSignatureBuilder#setFinal(false)} and\r
49      * {@link MethodSignatureBuilder#setAccessModifier(PUBLIC)}\r
50      * \r
51      * @param name\r
52      *            Name of Method\r
53      * @return <code>new</code> instance of Method Signature Builder.\r
54      */\r
55     @Override\r
56     public MethodSignatureBuilder addMethod(String name) {\r
57         final MethodSignatureBuilder builder = super.addMethod(name);\r
58         builder.setAbstract(false);\r
59         return builder;\r
60     }\r
61 \r
62     @Override\r
63     public GeneratedTOBuilder addEqualsIdentity(GeneratedPropertyBuilder property) {\r
64         equalsProperties.add(property);\r
65         return this;\r
66     }\r
67 \r
68     @Override\r
69     public GeneratedTOBuilder addHashIdentity(GeneratedPropertyBuilder property) {\r
70         hashProperties.add(property);\r
71         return this;\r
72     }\r
73 \r
74     @Override\r
75     public GeneratedTOBuilder addToStringProperty(GeneratedPropertyBuilder property) {\r
76         toStringProperties.add(property);\r
77         return this;\r
78     }\r
79 \r
80     @Override\r
81     protected GeneratedTOBuilder thisInstance() {\r
82         return this;\r
83     }\r
84     \r
85     @Override\r
86     public GeneratedTransferObject toInstance() {\r
87         return new GeneratedTransferObjectImpl(this);\r
88     }\r
89 \r
90     @Override\r
91     public String toString() {\r
92         StringBuilder builder = new StringBuilder();\r
93         builder.append("GeneratedTransferObject [packageName=");\r
94         builder.append(getPackageName());\r
95         builder.append(", name=");\r
96         builder.append(getName());\r
97         builder.append(", comment=");\r
98         builder.append(getComment());\r
99         builder.append(", constants=");\r
100         builder.append(getConstants());\r
101         builder.append(", enumerations=");\r
102         builder.append(getEnumerations());\r
103         builder.append(", properties=");\r
104         builder.append(properties);\r
105         builder.append(", equalsProperties=");\r
106         builder.append(equalsProperties);\r
107         builder.append(", hashCodeProperties=");\r
108         builder.append(hashProperties);\r
109         builder.append(", stringProperties=");\r
110         builder.append(toStringProperties);\r
111         builder.append(", annotations=");\r
112         builder.append(getAnnotations());\r
113         builder.append(", methods=");\r
114         builder.append(getMethodDefinitions());\r
115         builder.append("]");\r
116         return builder.toString();\r
117     }\r
118 \r
119     @Override\r
120     public void setIsUnion(boolean isUnion) {\r
121         this.isUnionType = isUnion;\r
122     }\r
123 \r
124     private static final class GeneratedTransferObjectImpl extends AbstractGeneratedType implements\r
125             GeneratedTransferObject {\r
126 \r
127         private final List<GeneratedProperty> equalsProperties;\r
128         private final List<GeneratedProperty> hashCodeProperties;\r
129         private final List<GeneratedProperty> stringProperties;\r
130         private final GeneratedTransferObject extendsType;\r
131         private final boolean isUnionType;\r
132 \r
133         public GeneratedTransferObjectImpl(GeneratedTOBuilderImpl builder) {\r
134             super(builder);\r
135             this.extendsType = builder.extendsType;\r
136             this.equalsProperties = toUnmodifiableProperties(builder.equalsProperties);\r
137             this.hashCodeProperties = toUnmodifiableProperties(builder.hashProperties);\r
138             this.stringProperties = toUnmodifiableProperties(builder.toStringProperties);\r
139             this.isUnionType = builder.isUnionType;\r
140         }\r
141 \r
142         @Override\r
143         public boolean isUnionType() {\r
144             return isUnionType;\r
145         }\r
146         @Override\r
147         public GeneratedTransferObject getSuperType() {\r
148             return extendsType;\r
149         }\r
150 \r
151         @Override\r
152         public List<GeneratedProperty> getEqualsIdentifiers() {\r
153             return equalsProperties;\r
154         }\r
155 \r
156         @Override\r
157         public List<GeneratedProperty> getHashCodeIdentifiers() {\r
158             return hashCodeProperties;\r
159         }\r
160 \r
161         @Override\r
162         public List<GeneratedProperty> getToStringIdentifiers() {\r
163             return stringProperties;\r
164         }\r
165 \r
166         @Override\r
167         public String toString() {\r
168             StringBuilder builder = new StringBuilder();\r
169             builder.append("GeneratedTransferObject [packageName=");\r
170             builder.append(getPackageName());\r
171             builder.append(", name=");\r
172             builder.append(getName());\r
173             builder.append(", comment=");\r
174             builder.append(", annotations=");\r
175             builder.append(getAnnotations());\r
176             builder.append(getComment());\r
177             builder.append(", extends=");\r
178             builder.append(getSuperType());\r
179             builder.append(", implements=");\r
180             builder.append(getImplements());\r
181             builder.append(", enclosedTypes=");\r
182             builder.append(getEnclosedTypes());\r
183             builder.append(", constants=");\r
184             builder.append(getConstantDefinitions());\r
185             builder.append(", enumerations=");\r
186             builder.append(getEnumerations());\r
187             builder.append(", properties=");\r
188             builder.append(getProperties());\r
189             builder.append(", equalsProperties=");\r
190             builder.append(equalsProperties);\r
191             builder.append(", hashCodeProperties=");\r
192             builder.append(hashCodeProperties);\r
193             builder.append(", stringProperties=");\r
194             builder.append(stringProperties);\r
195             builder.append(", methods=");\r
196             builder.append(getMethodDefinitions());\r
197             builder.append("]");\r
198             return builder.toString();\r
199         }\r
200     }\r
201 }\r