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 org.opendaylight.controller.binding.generator.util.AbstractBaseType;
11 import org.opendaylight.controller.sal.binding.model.api.*;
12 import org.opendaylight.controller.sal.binding.model.api.type.builder.*;
14 import java.util.ArrayList;
15 import java.util.Collections;
16 import java.util.List;
18 abstract class AbstractGeneratedType extends AbstractBaseType implements GeneratedType {
20 private final Type parent;
21 private final String comment;
22 private final List<AnnotationType> annotations;
23 private final List<Type> implementsTypes;
24 private final List<Enumeration> enumerations;
25 private final List<Constant> constants;
26 private final List<MethodSignature> methodSignatures;
27 private final List<GeneratedType> enclosedTypes;
28 private final boolean isAbstract;
30 public AbstractGeneratedType(final Type parent, final String packageName, final String name, final String comment,
31 final List<AnnotationTypeBuilder> annotationBuilders, final boolean isAbstract,
32 final List<Type> implementsTypes, final List<GeneratedTypeBuilder> enclosedGenTypeBuilders,
33 final List<GeneratedTOBuilder> enclosedGenTOBuilders, final List<EnumBuilder> enumBuilders,
34 final List<Constant> constants, final List<MethodSignatureBuilder> methodBuilders) {
35 super(packageName, name);
37 this.comment = comment;
38 this.annotations = toUnmodifiableAnnotations(annotationBuilders);
39 this.implementsTypes = Collections.unmodifiableList(implementsTypes);
40 this.constants = Collections.unmodifiableList(constants);
41 this.enumerations = toUnmodifiableEnumerations(enumBuilders);
42 this.methodSignatures = toUnmodifiableMethods(methodBuilders);
43 this.enclosedTypes = toUnmodifiableEnclosedTypes(enclosedGenTypeBuilders, enclosedGenTOBuilders);
44 this.isAbstract = isAbstract;
47 private List<GeneratedType> toUnmodifiableEnclosedTypes(final List<GeneratedTypeBuilder> enclosedGenTypeBuilders,
48 final List<GeneratedTOBuilder> enclosedGenTOBuilders) {
49 final List<GeneratedType> enclosedTypes = new ArrayList<>();
50 for (final GeneratedTypeBuilder builder : enclosedGenTypeBuilders) {
51 if (builder != null) {
52 enclosedTypes.add(builder.toInstance());
56 for (final GeneratedTOBuilder builder : enclosedGenTOBuilders) {
57 if (builder != null) {
58 enclosedTypes.add(builder.toInstance());
64 protected List<AnnotationType> toUnmodifiableAnnotations(final List<AnnotationTypeBuilder> annotationBuilders) {
65 final List<AnnotationType> annotations = new ArrayList<>();
66 for (final AnnotationTypeBuilder builder : annotationBuilders) {
67 annotations.add(builder.toInstance());
69 return Collections.unmodifiableList(annotations);
72 protected List<MethodSignature> toUnmodifiableMethods(List<MethodSignatureBuilder> methodBuilders) {
73 final List<MethodSignature> methods = new ArrayList<>();
74 for (final MethodSignatureBuilder methodBuilder : methodBuilders) {
75 methods.add(methodBuilder.toInstance(this));
77 return Collections.unmodifiableList(methods);
80 protected List<Enumeration> toUnmodifiableEnumerations(List<EnumBuilder> enumBuilders) {
81 final List<Enumeration> enums = new ArrayList<>();
82 for (final EnumBuilder enumBuilder : enumBuilders) {
83 enums.add(enumBuilder.toInstance(this));
85 return Collections.unmodifiableList(enums);
89 public Type getParentType() {
94 public String getComment() {
99 public List<AnnotationType> getAnnotations() {
104 public boolean isAbstract() {
109 public List<Type> getImplements() {
110 return implementsTypes;
114 public List<GeneratedType> getEnclosedTypes() {
115 return enclosedTypes;
119 public List<Enumeration> getEnumerations() {
124 public List<Constant> getConstantDefinitions() {
129 public List<MethodSignature> getMethodDefinitions() {
130 return methodSignatures;
134 public String toString() {
135 StringBuilder builder = new StringBuilder();
136 builder.append("GeneratedType [packageName=");
137 builder.append(getPackageName());
138 builder.append(", name=");
139 builder.append(getName());
140 if (parent != null) {
141 builder.append(", parent=");
142 builder.append(parent.getFullyQualifiedName());
144 builder.append(", parent=null");
146 builder.append(", comment=");
147 builder.append(comment);
148 builder.append(", annotations=");
149 builder.append(annotations);
150 builder.append(", enclosedTypes=");
151 builder.append(enclosedTypes);
152 builder.append(", enumerations=");
153 builder.append(enumerations);
154 builder.append(", constants=");
155 builder.append(constants);
156 builder.append(", methodSignatures=");
157 builder.append(methodSignatures);
159 return builder.toString();