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