2 * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.controller.binding.generator.util.generated.type.builder;
10 import java.util.ArrayList;
11 import java.util.Collections;
12 import java.util.List;
14 import org.opendaylight.controller.sal.binding.model.api.AnnotationType;
15 import org.opendaylight.controller.sal.binding.model.api.Enumeration;
16 import org.opendaylight.controller.sal.binding.model.api.Type;
17 import org.opendaylight.controller.sal.binding.model.api.type.builder.AnnotationTypeBuilder;
18 import org.opendaylight.controller.sal.binding.model.api.type.builder.EnumBuilder;
20 public final class EnumerationBuilderImpl implements EnumBuilder {
21 private final String packageName;
22 private final String name;
23 private final List<Enumeration.Pair> values;
24 private final List<AnnotationTypeBuilder> annotationBuilders = new ArrayList<AnnotationTypeBuilder>();
26 public EnumerationBuilderImpl(final String packageName, final String name) {
28 this.packageName = packageName;
30 values = new ArrayList<>();
34 public String getPackageName() {
39 public String getName() {
44 public String getFullyQualifiedName() {
45 return packageName + "." + name;
49 public AnnotationTypeBuilder addAnnotation(final String packageName, final String name) {
50 if (packageName != null && name != null) {
51 final AnnotationTypeBuilder builder = new AnnotationTypeBuilderImpl(packageName, name);
52 if (annotationBuilders.add(builder)) {
60 public void addValue(final String name, final Integer value) {
61 values.add(new EnumPairImpl(name, value));
65 public Enumeration toInstance(final Type definingType) {
66 return new EnumerationImpl(definingType, annotationBuilders, packageName, name, values);
72 * @see java.lang.Object#hashCode()
75 public int hashCode() {
78 result = prime * result + ((name == null) ? 0 : name.hashCode());
79 result = prime * result
80 + ((packageName == null) ? 0 : packageName.hashCode());
87 * @see java.lang.Object#equals(java.lang.Object)
90 public boolean equals(Object obj) {
97 if (getClass() != obj.getClass()) {
100 EnumerationBuilderImpl other = (EnumerationBuilderImpl) obj;
102 if (other.name != null) {
105 } else if (!name.equals(other.name)) {
108 if (packageName == null) {
109 if (other.packageName != null) {
112 } else if (!packageName.equals(other.packageName)) {
121 * @see java.lang.Object#toString()
124 public String toString() {
125 StringBuilder builder = new StringBuilder();
126 builder.append("EnumerationBuilderImpl [packageName=");
127 builder.append(packageName);
128 builder.append(", name=");
129 builder.append(name);
130 builder.append(", values=");
131 builder.append(values);
133 return builder.toString();
136 private static final class EnumPairImpl implements Enumeration.Pair {
138 private final String name;
139 private final Integer value;
141 public EnumPairImpl(String name, Integer value) {
148 public String getName() {
153 public Integer getValue() {
160 * @see java.lang.Object#hashCode()
163 public int hashCode() {
164 final int prime = 31;
166 result = prime * result + ((name == null) ? 0 : name.hashCode());
167 result = prime * result + ((value == null) ? 0 : value.hashCode());
174 * @see java.lang.Object#equals(java.lang.Object)
177 public boolean equals(Object obj) {
184 if (getClass() != obj.getClass()) {
187 EnumPairImpl other = (EnumPairImpl) obj;
189 if (other.name != null) {
192 } else if (!name.equals(other.name)) {
196 if (other.value != null) {
199 } else if (!value.equals(other.value)) {
208 * @see java.lang.Object#toString()
211 public String toString() {
212 StringBuilder builder = new StringBuilder();
213 builder.append("EnumPair [name=");
214 builder.append(name);
215 builder.append(", value=");
216 builder.append(value);
218 return builder.toString();
222 private static final class EnumerationImpl implements Enumeration {
224 private final Type definingType;
225 private final String packageName;
226 private final String name;
227 private final List<Pair> values;
228 private List<AnnotationType> annotations = new ArrayList<>();
230 public EnumerationImpl(final Type definingType,
231 final List<AnnotationTypeBuilder> annotationBuilders,
232 final String packageName, final String name,
233 final List<Pair> values) {
235 this.definingType = definingType;
236 for (final AnnotationTypeBuilder builder : annotationBuilders) {
237 annotations.add(builder.toInstance());
239 this.annotations = Collections.unmodifiableList(annotations);
240 this.packageName = packageName;
242 this.values = Collections.unmodifiableList(values);
246 public Type getDefiningType() {
251 public String getPackageName() {
256 public String getName() {
261 public String getFullyQualifiedName() {
262 return packageName + "." + name;
266 public List<Pair> getValues() {
271 public List<AnnotationType> getAnnotations() {
276 public String toFormattedString() {
277 StringBuilder builder = new StringBuilder();
278 builder.append("public enum");
280 builder.append(name);
281 builder.append(" {");
282 builder.append("\n");
285 for (final Enumeration.Pair valPair : values) {
286 builder.append("\t");
288 builder.append(valPair.getName());
289 builder.append(" (");
290 builder.append(valPair.getValue());
292 if (i == (values.size() - 1)) {
293 builder.append(" );");
295 builder.append(" ),");
299 return builder.toString();
305 * @see java.lang.Object#hashCode()
308 public int hashCode() {
309 final int prime = 31;
311 result = prime * result + ((name == null) ? 0 : name.hashCode());
312 result = prime * result
313 + ((packageName == null) ? 0 : packageName.hashCode());
314 result = prime * result
315 + ((values == null) ? 0 : values.hashCode());
323 * @see java.lang.Object#equals(java.lang.Object)
326 public boolean equals(Object obj) {
333 if (getClass() != obj.getClass()) {
336 EnumerationImpl other = (EnumerationImpl) obj;
338 if (other.name != null) {
341 } else if (!name.equals(other.name)) {
344 if (packageName == null) {
345 if (other.packageName != null) {
348 } else if (!packageName.equals(other.packageName)) {
351 if (values == null) {
352 if (other.values != null) {
355 } else if (!values.equals(other.values)) {
364 * @see java.lang.Object#toString()
367 public String toString() {
368 StringBuilder builder = new StringBuilder();
369 builder.append("Enumeration [packageName=");
370 builder.append(packageName);
371 if (definingType != null) {
372 builder.append(", definingType=");
373 builder.append(definingType.getPackageName());
375 builder.append(definingType.getName());
377 builder.append(", definingType= null");
379 builder.append(", name=");
380 builder.append(name);
381 builder.append(", values=");
382 builder.append(values);
384 return builder.toString();