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.AccessModifier;
\r
12 import org.opendaylight.yangtools.sal.binding.model.api.Constant;
\r
13 import org.opendaylight.yangtools.sal.binding.model.api.Type;
\r
14 import org.opendaylight.yangtools.sal.binding.model.api.type.builder.*;
\r
16 import java.util.ArrayList;
\r
17 import java.util.List;
\r
19 abstract class AbstractGeneratedTypeBuilder extends AbstractBaseType implements GeneratedTypeBuilder {
\r
21 private String comment = "";
\r
23 private final List<AnnotationTypeBuilder> annotationBuilders = new ArrayList<>();
\r
24 private final List<Type> implementsTypes = new ArrayList<>();
\r
25 private final List<EnumBuilder> enumDefinitions = new ArrayList<>();
\r
26 private final List<Constant> constants = new ArrayList<>();
\r
27 private final List<MethodSignatureBuilder> methodDefinitions = new ArrayList<>();
\r
28 private final List<GeneratedTypeBuilder> enclosedTypes = new ArrayList<>();
\r
29 private final List<GeneratedTOBuilder> enclosingTransferObjects = new ArrayList<>();
\r
30 private final List<GeneratedPropertyBuilder> properties = new ArrayList<>();
\r
31 private boolean isAbstract;
\r
33 public AbstractGeneratedTypeBuilder(final String packageName, final String name) {
\r
34 super(packageName, name);
\r
37 protected String getComment() {
\r
41 protected List<AnnotationTypeBuilder> getAnnotations() {
\r
42 return annotationBuilders;
\r
45 protected boolean isAbstract() {
\r
49 protected List<Type> getImplementsTypes() {
\r
50 return implementsTypes;
\r
53 protected List<EnumBuilder> getEnumerations() {
\r
54 return enumDefinitions;
\r
57 protected List<Constant> getConstants() {
\r
61 protected List<MethodSignatureBuilder> getMethodDefinitions() {
\r
62 return methodDefinitions;
\r
65 protected List<GeneratedTypeBuilder> getEnclosedTypes() {
\r
66 return enclosedTypes;
\r
69 protected List<GeneratedTOBuilder> getEnclosedTransferObjects() {
\r
70 return enclosingTransferObjects;
\r
74 public GeneratedTypeBuilder addEnclosingType(String name) {
\r
76 throw new IllegalArgumentException("Name for Enclosing Generated Type cannot be null!");
\r
78 GeneratedTypeBuilder builder = new GeneratedTOBuilderImpl(getFullyQualifiedName(), name);
\r
79 enclosedTypes.add(builder);
\r
84 public GeneratedTOBuilder addEnclosingTransferObject(String name) {
\r
86 throw new IllegalArgumentException("Name for Enclosing Generated Transfer Object cannot be null!");
\r
88 GeneratedTOBuilder builder = new GeneratedTOBuilderImpl(getFullyQualifiedName(), name);
\r
89 enclosingTransferObjects.add(builder);
\r
94 public void addEnclosingTransferObject(final GeneratedTOBuilder genTOBuilder) {
\r
95 if (genTOBuilder == null) {
\r
96 throw new IllegalArgumentException("Parameter genTOBuilder cannot be null!");
\r
98 enclosingTransferObjects.add(genTOBuilder);
\r
102 public void addComment(String comment) {
\r
103 this.comment = comment;
\r
107 public AnnotationTypeBuilder addAnnotation(final String packageName, final String name) {
\r
108 if (packageName == null) {
\r
109 throw new IllegalArgumentException("Package Name for Annotation Type cannot be null!");
\r
111 if (name == null) {
\r
112 throw new IllegalArgumentException("Name of Annotation Type cannot be null!");
\r
115 final AnnotationTypeBuilder builder = new AnnotationTypeBuilderImpl(packageName, name);
\r
116 annotationBuilders.add(builder);
\r
121 public void setAbstract(boolean isAbstract) {
\r
122 this.isAbstract = isAbstract;
\r
126 public boolean addImplementsType(Type genType) {
\r
127 if (genType == null) {
\r
128 throw new IllegalArgumentException("Type cannot be null");
\r
130 return implementsTypes.add(genType);
\r
134 public Constant addConstant(Type type, String name, Object value) {
\r
135 if (type == null) {
\r
136 throw new IllegalArgumentException("Returning Type for Constant cannot be null!");
\r
138 if (name == null) {
\r
139 throw new IllegalArgumentException("Name of constant cannot be null!");
\r
142 final Constant constant = new ConstantImpl(this, type, name, value);
\r
143 constants.add(constant);
\r
148 public EnumBuilder addEnumeration(String name) {
\r
149 if (name == null) {
\r
150 throw new IllegalArgumentException("Name of enumeration cannot be null!");
\r
152 final EnumBuilder builder = new EnumerationBuilderImpl(getFullyQualifiedName(), name);
\r
153 enumDefinitions.add(builder);
\r
158 public MethodSignatureBuilder addMethod(String name) {
\r
159 if (name == null) {
\r
160 throw new IllegalArgumentException("Name of method cannot be null!");
\r
162 final MethodSignatureBuilder builder = new MethodSignatureBuilderImpl(name);
\r
163 builder.setAccessModifier(AccessModifier.PUBLIC);
\r
164 builder.setAbstract(true);
\r
165 methodDefinitions.add(builder);
\r
170 public boolean containsMethod(String name) {
\r
171 if (name == null) {
\r
172 throw new IllegalArgumentException("Parameter name can't be null");
\r
174 for (MethodSignatureBuilder methodDefinition : methodDefinitions) {
\r
175 if (name.equals(methodDefinition.getName())) {
\r
183 public GeneratedPropertyBuilder addProperty(String name) {
\r
184 final GeneratedPropertyBuilder builder = new GeneratedPropertyBuilderImpl(name);
\r
185 builder.setAccessModifier(AccessModifier.PUBLIC);
\r
186 properties.add(builder);
\r
191 public boolean containsProperty(String name) {
\r
192 if (name == null) {
\r
193 throw new IllegalArgumentException("Parameter name can't be null");
\r
195 for (GeneratedPropertyBuilder property : properties) {
\r
196 if (name.equals(property.getName())) {
\r
204 public int hashCode() {
\r
205 final int prime = 31;
\r
207 result = prime * result + ((getName() == null) ? 0 : getName().hashCode());
\r
208 result = prime * result + ((getPackageName() == null) ? 0 : getPackageName().hashCode());
\r
213 public boolean equals(Object obj) {
\r
220 if (getClass() != obj.getClass()) {
\r
223 AbstractGeneratedTypeBuilder other = (AbstractGeneratedTypeBuilder) obj;
\r
224 if (getName() == null) {
\r
225 if (other.getName() != null) {
\r
228 } else if (!getName().equals(other.getName())) {
\r
231 if (getPackageName() == null) {
\r
232 if (other.getPackageName() != null) {
\r
235 } else if (!getPackageName().equals(other.getPackageName())) {
\r
241 public Type getParent() {
\r
245 protected List<GeneratedPropertyBuilder> getProperties() {
\r