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 String getPackageName() {
36 public String getName() {
41 public void addValue(final String name, final Integer value) {
42 values.add(new EnumPairImpl(name, value));
46 public Enumeration toInstance(final Type definingType) {
47 return new EnumerationImpl(definingType, packageName, name, values);
53 * @see java.lang.Object#hashCode()
56 public int hashCode() {
59 result = prime * result + ((name == null) ? 0 : name.hashCode());
60 result = prime * result
61 + ((packageName == null) ? 0 : packageName.hashCode());
68 * @see java.lang.Object#equals(java.lang.Object)
71 public boolean equals(Object obj) {
78 if (getClass() != obj.getClass()) {
81 EnumerationBuilderImpl other = (EnumerationBuilderImpl) obj;
83 if (other.name != null) {
86 } else if (!name.equals(other.name)) {
89 if (packageName == null) {
90 if (other.packageName != null) {
93 } else if (!packageName.equals(other.packageName)) {
102 * @see java.lang.Object#toString()
105 public String toString() {
106 StringBuilder builder = new StringBuilder();
107 builder.append("EnumerationBuilderImpl [packageName=");
108 builder.append(packageName);
109 builder.append(", name=");
110 builder.append(name);
111 builder.append(", values=");
112 builder.append(values);
114 return builder.toString();
117 private static final class EnumPairImpl implements Enumeration.Pair {
119 private final String name;
120 private final Integer value;
122 public EnumPairImpl(String name, Integer value) {
129 public String getName() {
134 public Integer getValue() {
141 * @see java.lang.Object#hashCode()
144 public int hashCode() {
145 final int prime = 31;
147 result = prime * result + ((name == null) ? 0 : name.hashCode());
148 result = prime * result + ((value == null) ? 0 : value.hashCode());
155 * @see java.lang.Object#equals(java.lang.Object)
158 public boolean equals(Object obj) {
165 if (getClass() != obj.getClass()) {
168 EnumPairImpl other = (EnumPairImpl) obj;
170 if (other.name != null) {
173 } else if (!name.equals(other.name)) {
177 if (other.value != null) {
180 } else if (!value.equals(other.value)) {
189 * @see java.lang.Object#toString()
192 public String toString() {
193 StringBuilder builder = new StringBuilder();
194 builder.append("EnumPairImpl [name=");
195 builder.append(name);
196 builder.append(", value=");
197 builder.append(value);
199 return builder.toString();
203 private static final class EnumerationImpl implements Enumeration {
205 private final Type definingType;
206 private final String packageName;
207 private final String name;
208 private final List<Pair> values;
210 public EnumerationImpl(final Type definingType,
211 final String packageName, final String name,
212 final List<Pair> values) {
214 this.definingType = definingType;
215 this.packageName = packageName;
217 this.values = Collections.unmodifiableList(values);
221 public Type getDefiningType() {
226 public String getPackageName() {
231 public String getName() {
236 public List<Pair> getValues() {
241 public String toFormattedString() {
242 StringBuilder builder = new StringBuilder();
243 builder.append("public enum");
245 builder.append(name);
246 builder.append(" {");
247 builder.append("\n");
250 for (final Enumeration.Pair valPair : values) {
251 builder.append("\t");
253 builder.append(valPair.getName());
254 builder.append(" (");
255 builder.append(valPair.getValue());
257 if (i == (values.size() - 1)) {
258 builder.append(" );");
260 builder.append(" ),");
264 return builder.toString();
270 * @see java.lang.Object#hashCode()
273 public int hashCode() {
274 final int prime = 31;
276 result = prime * result + ((name == null) ? 0 : name.hashCode());
277 result = prime * result
278 + ((packageName == null) ? 0 : packageName.hashCode());
279 result = prime * result
280 + ((values == null) ? 0 : values.hashCode());
282 if (definingType != null) {
285 + ((definingType.getPackageName() == null) ? 0
286 : definingType.getPackageName().hashCode());
289 + ((definingType.getName() == null) ? 0 : definingType
290 .getName().hashCode());
299 * @see java.lang.Object#equals(java.lang.Object)
302 public boolean equals(Object obj) {
309 if (getClass() != obj.getClass()) {
312 EnumerationImpl other = (EnumerationImpl) obj;
314 if (other.name != null) {
317 } else if (!name.equals(other.name)) {
320 if (packageName == null) {
321 if (other.packageName != null) {
324 } else if (!packageName.equals(other.packageName)) {
327 if (values == null) {
328 if (other.values != null) {
331 } else if (!values.equals(other.values)) {
334 if (definingType == null) {
335 if (other.definingType != null) {
338 } else if ((definingType != null) && (other.definingType != null)) {
339 if (!definingType.getPackageName().equals(
340 other.definingType.getPackageName())
341 && !definingType.getName().equals(
342 other.definingType.getName())) {
352 * @see java.lang.Object#toString()
355 public String toString() {
356 StringBuilder builder = new StringBuilder();
357 builder.append("EnumerationImpl [packageName=");
358 builder.append(packageName);
359 if (definingType != null) {
360 builder.append(", definingType=");
361 builder.append(definingType.getPackageName());
363 builder.append(definingType.getName());
365 builder.append(", definingType= null");
367 builder.append(", name=");
368 builder.append(name);
369 builder.append(", values=");
370 builder.append(values);
372 return builder.toString();