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.yangtools.binding.generator.util.generated.type.builder;
\r
10 import org.opendaylight.yangtools.binding.generator.util.AbstractBaseType;
\r
11 import org.opendaylight.yangtools.sal.binding.model.api.*;
\r
12 import org.opendaylight.yangtools.sal.binding.model.api.type.builder.*;
\r
14 import java.util.ArrayList;
\r
15 import java.util.Collections;
\r
16 import java.util.List;
\r
18 abstract class AbstractGeneratedType extends AbstractBaseType implements GeneratedType {
\r
20 private final Type parent;
\r
21 private final String comment;
\r
22 private final List<AnnotationType> annotations;
\r
23 private final List<Type> implementsTypes;
\r
24 private final List<Enumeration> enumerations;
\r
25 private final List<Constant> constants;
\r
26 private final List<MethodSignature> methodSignatures;
\r
27 private final List<GeneratedType> enclosedTypes;
\r
28 private final List<GeneratedProperty> properties;
\r
29 private final boolean isAbstract;
\r
32 public AbstractGeneratedType(AbstractGeneratedTypeBuilder builder) {
\r
33 super(builder.getPackageName(),builder.getName());
\r
34 this.parent = builder.getParent();
\r
35 this.comment = builder.getComment();
\r
36 this.annotations = toUnmodifiableAnnotations(builder.getAnnotations());
\r
37 this.implementsTypes = Collections.unmodifiableList(builder.getImplementsTypes());
\r
38 this.constants = Collections.unmodifiableList(builder.getConstants());
\r
39 this.enumerations = toUnmodifiableEnumerations(builder.getEnumerations());
\r
40 this.methodSignatures = toUnmodifiableMethods(builder.getMethodDefinitions());
\r
41 this.enclosedTypes = toUnmodifiableEnclosedTypes(builder.getEnclosedTypes(), builder.getEnclosedTransferObjects());
\r
42 this.properties = toUnmodifiableProperties(builder.getProperties());
\r
43 this.isAbstract = builder.isAbstract();
\r
46 public AbstractGeneratedType(final Type parent, final String packageName, final String name, final String comment,
\r
47 final List<AnnotationTypeBuilder> annotationBuilders, final boolean isAbstract,
\r
48 final List<Type> implementsTypes, final List<GeneratedTypeBuilder> enclosedGenTypeBuilders,
\r
49 final List<GeneratedTOBuilder> enclosedGenTOBuilders, final List<EnumBuilder> enumBuilders,
\r
50 final List<Constant> constants, final List<MethodSignatureBuilder> methodBuilders,final List<GeneratedPropertyBuilder> propertyBuilders) {
\r
51 super(packageName, name);
\r
52 this.parent = parent;
\r
53 this.comment = comment;
\r
54 this.annotations = toUnmodifiableAnnotations(annotationBuilders);
\r
55 this.implementsTypes = Collections.unmodifiableList(implementsTypes);
\r
56 this.constants = Collections.unmodifiableList(constants);
\r
57 this.enumerations = toUnmodifiableEnumerations(enumBuilders);
\r
58 this.methodSignatures = toUnmodifiableMethods(methodBuilders);
\r
59 this.enclosedTypes = toUnmodifiableEnclosedTypes(enclosedGenTypeBuilders, enclosedGenTOBuilders);
\r
60 this.properties = toUnmodifiableProperties(propertyBuilders);
\r
61 this.isAbstract = isAbstract;
\r
65 private List<GeneratedType> toUnmodifiableEnclosedTypes(final List<GeneratedTypeBuilder> enclosedGenTypeBuilders,
\r
66 final List<GeneratedTOBuilder> enclosedGenTOBuilders) {
\r
67 final List<GeneratedType> enclosedTypes = new ArrayList<>();
\r
68 for (final GeneratedTypeBuilder builder : enclosedGenTypeBuilders) {
\r
69 if (builder != null) {
\r
70 enclosedTypes.add(builder.toInstance());
\r
74 for (final GeneratedTOBuilder builder : enclosedGenTOBuilders) {
\r
75 if (builder != null) {
\r
76 enclosedTypes.add(builder.toInstance());
\r
79 return enclosedTypes;
\r
82 protected final List<AnnotationType> toUnmodifiableAnnotations(final List<AnnotationTypeBuilder> annotationBuilders) {
\r
83 final List<AnnotationType> annotations = new ArrayList<>();
\r
84 for (final AnnotationTypeBuilder builder : annotationBuilders) {
\r
85 annotations.add(builder.toInstance());
\r
87 return Collections.unmodifiableList(annotations);
\r
90 protected final List<MethodSignature> toUnmodifiableMethods(List<MethodSignatureBuilder> methodBuilders) {
\r
91 final List<MethodSignature> methods = new ArrayList<>();
\r
92 for (final MethodSignatureBuilder methodBuilder : methodBuilders) {
\r
93 methods.add(methodBuilder.toInstance(this));
\r
95 return Collections.unmodifiableList(methods);
\r
98 protected final List<Enumeration> toUnmodifiableEnumerations(List<EnumBuilder> enumBuilders) {
\r
99 final List<Enumeration> enums = new ArrayList<>();
\r
100 for (final EnumBuilder enumBuilder : enumBuilders) {
\r
101 enums.add(enumBuilder.toInstance(this));
\r
103 return Collections.unmodifiableList(enums);
\r
106 protected final List<GeneratedProperty> toUnmodifiableProperties(List<GeneratedPropertyBuilder> methodBuilders) {
\r
107 final List<GeneratedProperty> methods = new ArrayList<>();
\r
108 for (final GeneratedPropertyBuilder methodBuilder : methodBuilders) {
\r
109 methods.add(methodBuilder.toInstance(this));
\r
111 return Collections.unmodifiableList(methods);
\r
116 public final Type getParentType() {
\r
121 public final String getComment() {
\r
126 public final List<AnnotationType> getAnnotations() {
\r
127 return annotations;
\r
131 public final boolean isAbstract() {
\r
136 public final List<Type> getImplements() {
\r
137 return implementsTypes;
\r
141 public final List<GeneratedType> getEnclosedTypes() {
\r
142 return enclosedTypes;
\r
146 public final List<Enumeration> getEnumerations() {
\r
147 return enumerations;
\r
151 public final List<Constant> getConstantDefinitions() {
\r
156 public final List<MethodSignature> getMethodDefinitions() {
\r
157 return methodSignatures;
\r
160 public final List<GeneratedProperty> getProperties() {
\r
167 public String toString() {
\r
168 StringBuilder builder = new StringBuilder();
\r
169 builder.append("GeneratedType [packageName=");
\r
170 builder.append(getPackageName());
\r
171 builder.append(", name=");
\r
172 builder.append(getName());
\r
173 if (parent != null) {
\r
174 builder.append(", parent=");
\r
175 builder.append(parent.getFullyQualifiedName());
\r
177 builder.append(", parent=null");
\r
179 builder.append(", comment=");
\r
180 builder.append(comment);
\r
181 builder.append(", annotations=");
\r
182 builder.append(annotations);
\r
183 builder.append(", enclosedTypes=");
\r
184 builder.append(enclosedTypes);
\r
185 builder.append(", enumerations=");
\r
186 builder.append(enumerations);
\r
187 builder.append(", constants=");
\r
188 builder.append(constants);
\r
189 builder.append(", methodSignatures=");
\r
190 builder.append(methodSignatures);
\r
191 builder.append("]");
\r
192 return builder.toString();
\r