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.sal.binding.generator.impl;
10 import java.util.ArrayList;
11 import java.util.Collections;
12 import java.util.List;
14 import org.opendaylight.controller.sal.binding.model.api.Enumeration;
15 import org.opendaylight.controller.sal.binding.model.api.Type;
16 import org.opendaylight.controller.sal.binding.model.api.type.builder.EnumBuilder;
18 final class EnumerationBuilderImpl implements EnumBuilder {
19 private final String packageName;
20 private final String name;
21 private final List<Enumeration.Pair> values;
23 public EnumerationBuilderImpl(final String packageName, final String name) {
25 this.packageName = packageName;
27 values = new ArrayList<Enumeration.Pair>();
31 public void addValue(final String name, final Integer value) {
32 values.add(new EnumPairImpl(name, value));
36 public Enumeration toInstance(final Type definingType) {
37 return new EnumerationImpl(definingType, packageName, name, values);
43 * @see java.lang.Object#hashCode()
46 public int hashCode() {
49 result = prime * result + ((name == null) ? 0 : name.hashCode());
50 result = prime * result
51 + ((packageName == null) ? 0 : packageName.hashCode());
58 * @see java.lang.Object#equals(java.lang.Object)
61 public boolean equals(Object obj) {
68 if (getClass() != obj.getClass()) {
71 EnumerationBuilderImpl other = (EnumerationBuilderImpl) obj;
73 if (other.name != null) {
76 } else if (!name.equals(other.name)) {
79 if (packageName == null) {
80 if (other.packageName != null) {
83 } else if (!packageName.equals(other.packageName)) {
92 * @see java.lang.Object#toString()
95 public String toString() {
96 StringBuilder builder = new StringBuilder();
97 builder.append("EnumerationBuilderImpl [packageName=");
98 builder.append(packageName);
99 builder.append(", name=");
100 builder.append(name);
101 builder.append(", values=");
102 builder.append(values);
104 return builder.toString();
107 private static final class EnumPairImpl implements Enumeration.Pair {
109 private final String name;
110 private final Integer value;
112 public EnumPairImpl(String name, Integer value) {
119 public String getName() {
124 public Integer getValue() {
131 * @see java.lang.Object#hashCode()
134 public int hashCode() {
135 final int prime = 31;
137 result = prime * result + ((name == null) ? 0 : name.hashCode());
138 result = prime * result + ((value == null) ? 0 : value.hashCode());
145 * @see java.lang.Object#equals(java.lang.Object)
148 public boolean equals(Object obj) {
155 if (getClass() != obj.getClass()) {
158 EnumPairImpl other = (EnumPairImpl) obj;
160 if (other.name != null) {
163 } else if (!name.equals(other.name)) {
167 if (other.value != null) {
170 } else if (!value.equals(other.value)) {
179 * @see java.lang.Object#toString()
182 public String toString() {
183 StringBuilder builder = new StringBuilder();
184 builder.append("EnumPairImpl [name=");
185 builder.append(name);
186 builder.append(", value=");
187 builder.append(value);
189 return builder.toString();
193 private static final class EnumerationImpl implements Enumeration {
195 private final Type definingType;
196 private final String packageName;
197 private final String name;
198 private final List<Pair> values;
200 public EnumerationImpl(final Type definingType,
201 final String packageName, final String name,
202 final List<Pair> values) {
204 this.definingType = definingType;
205 this.packageName = packageName;
207 this.values = Collections.unmodifiableList(values);
211 public Type getDefiningType() {
216 public String getPackageName() {
221 public String getName() {
226 public List<Pair> getValues() {
231 public String toFormattedString() {
232 StringBuilder builder = new StringBuilder();
233 builder.append("public enum");
235 builder.append(name);
236 builder.append(" {");
237 builder.append("\n");
240 for (final Enumeration.Pair valPair : values) {
241 builder.append("\t");
243 builder.append(valPair.getName());
244 builder.append(" (");
245 builder.append(valPair.getValue());
247 if (i == (values.size() - 1)) {
248 builder.append(" );");
250 builder.append(" ),");
254 return builder.toString();
260 * @see java.lang.Object#hashCode()
263 public int hashCode() {
264 final int prime = 31;
266 result = prime * result + ((name == null) ? 0 : name.hashCode());
267 result = prime * result
268 + ((packageName == null) ? 0 : packageName.hashCode());
269 result = prime * result
270 + ((values == null) ? 0 : values.hashCode());
272 if (definingType != null) {
275 + ((definingType.getPackageName() == null) ? 0
276 : definingType.getPackageName().hashCode());
279 + ((definingType.getName() == null) ? 0 : definingType
280 .getName().hashCode());
289 * @see java.lang.Object#equals(java.lang.Object)
292 public boolean equals(Object obj) {
299 if (getClass() != obj.getClass()) {
302 EnumerationImpl other = (EnumerationImpl) obj;
304 if (other.name != null) {
307 } else if (!name.equals(other.name)) {
310 if (packageName == null) {
311 if (other.packageName != null) {
314 } else if (!packageName.equals(other.packageName)) {
317 if (values == null) {
318 if (other.values != null) {
321 } else if (!values.equals(other.values)) {
324 if (definingType == null) {
325 if (other.definingType != null) {
328 } else if ((definingType != null) && (other.definingType != null)) {
329 if (!definingType.getPackageName().equals(
330 other.definingType.getPackageName())
331 && !definingType.getName().equals(
332 other.definingType.getName())) {
342 * @see java.lang.Object#toString()
345 public String toString() {
346 StringBuilder builder = new StringBuilder();
347 builder.append("EnumerationImpl [packageName=");
348 builder.append(packageName);
349 if (definingType != null) {
350 builder.append(", definingType=");
351 builder.append(definingType.getPackageName());
353 builder.append(definingType.getName());
355 builder.append(", definingType= null");
357 builder.append(", name=");
358 builder.append(name);
359 builder.append(", values=");
360 builder.append(values);
362 return builder.toString();