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.AccessModifier;
\r
15 import org.opendaylight.controller.sal.binding.model.api.Constant;
\r
16 import org.opendaylight.controller.sal.binding.model.api.Enumeration;
\r
17 import org.opendaylight.controller.sal.binding.model.api.GeneratedProperty;
\r
18 import org.opendaylight.controller.sal.binding.model.api.GeneratedTransferObject;
\r
19 import org.opendaylight.controller.sal.binding.model.api.MethodSignature;
\r
20 import org.opendaylight.controller.sal.binding.model.api.Type;
\r
21 import org.opendaylight.controller.sal.binding.model.api.type.builder.ConstantBuilder;
\r
22 import org.opendaylight.controller.sal.binding.model.api.type.builder.EnumBuilder;
\r
23 import org.opendaylight.controller.sal.binding.model.api.type.builder.GeneratedPropertyBuilder;
\r
24 import org.opendaylight.controller.sal.binding.model.api.type.builder.GeneratedTOBuilder;
\r
26 final class GeneratedTOBuilderImpl implements GeneratedTOBuilder {
\r
28 private final String packageName;
\r
29 private final String name;
\r
31 private final List<EnumBuilder> enumerations = new ArrayList<EnumBuilder>();
\r
32 private final List<GeneratedPropertyBuilder> properties = new ArrayList<GeneratedPropertyBuilder>();
\r
33 private final List<GeneratedPropertyBuilder> equalsProperties = new ArrayList<GeneratedPropertyBuilder>();
\r
34 private final List<GeneratedPropertyBuilder> hashProperties = new ArrayList<GeneratedPropertyBuilder>();
\r
35 private final List<GeneratedPropertyBuilder> toStringProperties = new ArrayList<GeneratedPropertyBuilder>();
\r
37 public GeneratedTOBuilderImpl(String packageName, String name) {
\r
39 this.packageName = packageName;
\r
44 public String getPackageName() {
\r
49 public String getName() {
\r
54 public EnumBuilder addEnumeration(String name) {
\r
55 final EnumBuilder builder = new EnumerationBuilderImpl(packageName,
\r
57 enumerations.add(builder);
\r
62 public GeneratedPropertyBuilder addProperty(String name) {
\r
63 final GeneratedPropertyBuilder builder = new GeneratedPropertyBuilderImpl(
\r
65 properties.add(builder);
\r
70 public boolean addEqualsIdentity(GeneratedPropertyBuilder property) {
\r
71 return equalsProperties.add(property);
\r
75 public boolean addHashIdentity(GeneratedPropertyBuilder property) {
\r
76 return hashProperties.add(property);
\r
80 public boolean addToStringProperty(GeneratedPropertyBuilder property) {
\r
81 return toStringProperties.add(property);
\r
85 public GeneratedTransferObject toInstance() {
\r
86 return new GeneratedTransferObjectImpl(packageName, name, enumerations,
\r
87 properties, equalsProperties, hashProperties,
\r
88 toStringProperties);
\r
91 private static final class GeneratedPropertyBuilderImpl implements
\r
92 GeneratedPropertyBuilder {
\r
94 private final String name;
\r
95 private Type returnType;
\r
96 private final List<MethodSignature.Parameter> parameters;
\r
97 private String comment = "";
\r
98 private AccessModifier accessModifier;
\r
99 private boolean isFinal;
\r
100 private boolean isReadOnly;
\r
102 public GeneratedPropertyBuilderImpl(final String name) {
\r
105 parameters = new ArrayList<MethodSignature.Parameter>();
\r
107 this.isReadOnly = true;
\r
108 accessModifier = AccessModifier.PUBLIC;
\r
111 public String getName() {
\r
116 public boolean addReturnType(Type returnType) {
\r
117 if (returnType != null) {
\r
118 this.returnType = returnType;
\r
119 this.parameters.add(new MethodParameterImpl(name, returnType));
\r
126 public void accessorModifier(final AccessModifier modifier) {
\r
127 accessModifier = modifier;
\r
131 public void addComment(String comment) {
\r
132 if (comment != null) {
\r
133 this.comment = comment;
\r
138 public void setFinal(boolean isFinal) {
\r
139 this.isFinal = isFinal;
\r
143 public void setReadOnly(boolean isReadOnly) {
\r
144 this.isReadOnly = isReadOnly;
\r
148 public GeneratedProperty toInstance(final Type definingType) {
\r
149 return new GeneratedPropertyImpl(name, comment, definingType,
\r
150 returnType, isFinal, isReadOnly, parameters, accessModifier);
\r
154 private static final class GeneratedPropertyImpl implements
\r
155 GeneratedProperty {
\r
157 private final String name;
\r
158 private final String comment;
\r
159 private final Type parent;
\r
160 private final Type returnType;
\r
161 private final boolean isFinal;
\r
162 private final boolean isReadOnly;
\r
163 private final List<MethodSignature.Parameter> parameters;
\r
164 private final AccessModifier modifier;
\r
166 public GeneratedPropertyImpl(final String name, final String comment,
\r
167 final Type parent, final Type returnType,
\r
168 final boolean isFinal, final boolean isReadOnly,
\r
169 final List<Parameter> parameters, final AccessModifier modifier) {
\r
172 this.comment = comment;
\r
173 this.parent = parent;
\r
174 this.returnType = returnType;
\r
175 this.isFinal = isFinal;
\r
176 this.isReadOnly = isReadOnly;
\r
177 this.parameters = Collections.unmodifiableList(parameters);
\r
178 this.modifier = modifier;
\r
182 public String getName() {
\r
187 public String getComment() {
\r
192 public Type getDefiningType() {
\r
197 public Type getReturnType() {
\r
202 public List<Parameter> getParameters() {
\r
207 public AccessModifier getAccessModifier() {
\r
212 public boolean isReadOnly() {
\r
217 public boolean isFinal() {
\r
222 public int hashCode() {
\r
223 final int prime = 31;
\r
225 result = prime * result
\r
226 + ((comment == null) ? 0 : comment.hashCode());
\r
227 result = prime * result + (isFinal ? 1231 : 1237);
\r
228 result = prime * result + (isReadOnly ? 1231 : 1237);
\r
229 result = prime * result
\r
230 + ((modifier == null) ? 0 : modifier.hashCode());
\r
231 result = prime * result + ((name == null) ? 0 : name.hashCode());
\r
232 result = prime * result
\r
233 + ((parameters == null) ? 0 : parameters.hashCode());
\r
235 if (parent != null) {
\r
238 + ((parent.getPackageName() == null) ? 0 : parent
\r
239 .getPackageName().hashCode());
\r
242 + ((parent.getName() == null) ? 0 : parent.getName()
\r
246 result = prime * result
\r
247 + ((returnType == null) ? 0 : returnType.hashCode());
\r
252 public boolean equals(Object obj) {
\r
259 if (getClass() != obj.getClass()) {
\r
262 GeneratedPropertyImpl other = (GeneratedPropertyImpl) obj;
\r
263 if (comment == null) {
\r
264 if (other.comment != null) {
\r
267 } else if (!comment.equals(other.comment)) {
\r
270 if (isFinal != other.isFinal) {
\r
273 if (isReadOnly != other.isReadOnly) {
\r
276 if (modifier != other.modifier) {
\r
279 if (name == null) {
\r
280 if (other.name != null) {
\r
283 } else if (!name.equals(other.name)) {
\r
286 if (parameters == null) {
\r
287 if (other.parameters != null) {
\r
290 } else if (!parameters.equals(other.parameters)) {
\r
293 if (parent == null) {
\r
294 if (other.parent != null) {
\r
297 } else if ((parent != null) && (other.parent != null)) {
\r
298 if (!parent.getPackageName().equals(
\r
299 other.parent.getPackageName())
\r
300 && !parent.getName().equals(other.parent.getName())) {
\r
304 if (returnType == null) {
\r
305 if (other.returnType != null) {
\r
308 } else if (!returnType.equals(other.returnType)) {
\r
315 public String toString() {
\r
316 StringBuilder builder = new StringBuilder();
\r
317 builder.append("GeneratedPropertyImpl [name=");
\r
318 builder.append(name);
\r
319 builder.append(", comment=");
\r
320 builder.append(comment);
\r
321 if (parent != null) {
\r
322 builder.append(", parent=");
\r
323 builder.append(parent.getPackageName());
\r
324 builder.append(".");
\r
325 builder.append(parent.getName());
\r
327 builder.append(", parent= null");
\r
329 builder.append(", returnType=");
\r
330 builder.append(returnType);
\r
331 builder.append(", isFinal=");
\r
332 builder.append(isFinal);
\r
333 builder.append(", isReadOnly=");
\r
334 builder.append(isReadOnly);
\r
335 builder.append(", parameters=");
\r
336 builder.append(parameters);
\r
337 builder.append(", modifier=");
\r
338 builder.append(modifier);
\r
339 builder.append("]");
\r
340 return builder.toString();
\r
344 private static final class GeneratedTransferObjectImpl implements
\r
345 GeneratedTransferObject {
\r
347 private final String packageName;
\r
348 private final String name;
\r
349 // private final List<Constant> constants;
\r
350 private final List<Enumeration> enumerations;
\r
351 private final List<GeneratedProperty> properties;
\r
352 private final List<GeneratedProperty> equalsProperties;
\r
353 private final List<GeneratedProperty> hashCodeProperties;
\r
354 private final List<GeneratedProperty> stringProperties;
\r
356 private List<Enumeration> toUnmodifiableEnumerations(
\r
357 final List<EnumBuilder> enumBuilders) {
\r
358 final List<Enumeration> enumerations = new ArrayList<Enumeration>();
\r
359 for (final EnumBuilder builder : enumBuilders) {
\r
360 enumerations.add(builder.toInstance(this));
\r
362 return Collections.unmodifiableList(enumerations);
\r
365 private List<Constant> toUnmodifiableConstant(
\r
366 final List<ConstantBuilder> constBuilders) {
\r
367 final List<Constant> constants = new ArrayList<Constant>();
\r
368 for (final ConstantBuilder builder : constBuilders) {
\r
369 constants.add(builder.toInstance(this));
\r
371 return Collections.unmodifiableList(constants);
\r
374 private List<GeneratedProperty> toUnmodifiableProperties(
\r
375 final List<GeneratedPropertyBuilder> propBuilders) {
\r
376 final List<GeneratedProperty> constants = new ArrayList<GeneratedProperty>();
\r
377 for (final GeneratedPropertyBuilder builder : propBuilders) {
\r
378 constants.add(builder.toInstance(this));
\r
380 return Collections.unmodifiableList(constants);
\r
383 public GeneratedTransferObjectImpl(String packageName, String name,
\r
384 List<EnumBuilder> enumBuilders,
\r
385 List<GeneratedPropertyBuilder> propBuilers,
\r
386 List<GeneratedPropertyBuilder> equalsBuilers,
\r
387 List<GeneratedPropertyBuilder> hashCodeBuilers,
\r
388 List<GeneratedPropertyBuilder> stringBuilers) {
\r
390 this.packageName = packageName;
\r
392 this.enumerations = toUnmodifiableEnumerations(enumBuilders);
\r
393 this.properties = toUnmodifiableProperties(propBuilers);
\r
394 this.equalsProperties = toUnmodifiableProperties(equalsBuilers);
\r
395 this.hashCodeProperties = toUnmodifiableProperties(hashCodeBuilers);
\r
396 this.stringProperties = toUnmodifiableProperties(stringBuilers);
\r
400 public String getPackageName() {
\r
401 return packageName;
\r
405 public String getName() {
\r
410 public List<Enumeration> getEnumDefintions() {
\r
411 return enumerations;
\r
415 public List<GeneratedProperty> getProperties() {
\r
420 public List<GeneratedProperty> getEqualsIdentifiers() {
\r
421 return equalsProperties;
\r
425 public List<GeneratedProperty> getHashCodeIdentifiers() {
\r
426 return hashCodeProperties;
\r
430 public List<GeneratedProperty> getToStringIdentifiers() {
\r
431 return stringProperties;
\r
437 * @see java.lang.Object#hashCode()
\r
440 public int hashCode() {
\r
441 final int prime = 31;
\r
443 result = prime * result
\r
444 + ((enumerations == null) ? 0 : enumerations.hashCode());
\r
447 + ((equalsProperties == null) ? 0 : equalsProperties
\r
451 + ((hashCodeProperties == null) ? 0 : hashCodeProperties
\r
453 result = prime * result + ((name == null) ? 0 : name.hashCode());
\r
454 result = prime * result
\r
455 + ((packageName == null) ? 0 : packageName.hashCode());
\r
456 result = prime * result
\r
457 + ((properties == null) ? 0 : properties.hashCode());
\r
460 + ((stringProperties == null) ? 0 : stringProperties
\r
468 * @see java.lang.Object#equals(java.lang.Object)
\r
471 public boolean equals(Object obj) {
\r
478 if (getClass() != obj.getClass()) {
\r
481 GeneratedTransferObjectImpl other = (GeneratedTransferObjectImpl) obj;
\r
482 if (enumerations == null) {
\r
483 if (other.enumerations != null) {
\r
486 } else if (!enumerations.equals(other.enumerations)) {
\r
489 if (equalsProperties == null) {
\r
490 if (other.equalsProperties != null) {
\r
493 } else if (!equalsProperties.equals(other.equalsProperties)) {
\r
496 if (hashCodeProperties == null) {
\r
497 if (other.hashCodeProperties != null) {
\r
500 } else if (!hashCodeProperties.equals(other.hashCodeProperties)) {
\r
503 if (name == null) {
\r
504 if (other.name != null) {
\r
507 } else if (!name.equals(other.name)) {
\r
510 if (packageName == null) {
\r
511 if (other.packageName != null) {
\r
514 } else if (!packageName.equals(other.packageName)) {
\r
517 if (properties == null) {
\r
518 if (other.properties != null) {
\r
521 } else if (!properties.equals(other.properties)) {
\r
524 if (stringProperties == null) {
\r
525 if (other.stringProperties != null) {
\r
528 } else if (!stringProperties.equals(other.stringProperties)) {
\r
537 * @see java.lang.Object#toString()
\r
540 public String toString() {
\r
541 StringBuilder builder = new StringBuilder();
\r
542 builder.append("GeneratedTransferObjectImpl [packageName=");
\r
543 builder.append(packageName);
\r
544 builder.append(", name=");
\r
545 builder.append(name);
\r
546 builder.append(", enumerations=");
\r
547 builder.append(enumerations);
\r
548 builder.append(", properties=");
\r
549 builder.append(properties);
\r
550 builder.append(", equalsProperties=");
\r
551 builder.append(equalsProperties);
\r
552 builder.append(", hashCodeProperties=");
\r
553 builder.append(hashCodeProperties);
\r
554 builder.append(", stringProperties=");
\r
555 builder.append(stringProperties);
\r
556 builder.append("]");
\r
557 return builder.toString();
\r