-/*\r
- * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.\r
- *\r
- * This program and the accompanying materials are made available under the\r
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
- * and is available at http://www.eclipse.org/legal/epl-v10.html\r
- */\r
-package org.opendaylight.yangtools.binding.generator.util.generated.type.builder;\r
-\r
-import org.opendaylight.yangtools.binding.generator.util.AbstractBaseType;\r
-import org.opendaylight.yangtools.sal.binding.model.api.AccessModifier;\r
-import org.opendaylight.yangtools.sal.binding.model.api.Constant;\r
-import org.opendaylight.yangtools.sal.binding.model.api.Type;\r
-import org.opendaylight.yangtools.sal.binding.model.api.type.builder.*;\r
-\r
-import java.util.ArrayList;\r
-import java.util.List;\r
-\r
-abstract class AbstractGeneratedTypeBuilder extends AbstractBaseType implements GeneratedTypeBuilder {\r
-\r
- private String comment = "";\r
-\r
- private final List<AnnotationTypeBuilder> annotationBuilders = new ArrayList<>();\r
- private final List<Type> implementsTypes = new ArrayList<>();\r
- private final List<EnumBuilder> enumDefinitions = new ArrayList<>();\r
- private final List<Constant> constants = new ArrayList<>();\r
- private final List<MethodSignatureBuilder> methodDefinitions = new ArrayList<>();\r
- private final List<GeneratedTypeBuilder> enclosedTypes = new ArrayList<>();\r
- private final List<GeneratedTOBuilder> enclosingTransferObjects = new ArrayList<>();\r
- private final List<GeneratedPropertyBuilder> properties = new ArrayList<>();\r
- private boolean isAbstract;\r
-\r
- public AbstractGeneratedTypeBuilder(final String packageName, final String name) {\r
- super(packageName, name);\r
- }\r
-\r
- protected String getComment() {\r
- return comment;\r
- }\r
-\r
- protected List<AnnotationTypeBuilder> getAnnotations() {\r
- return annotationBuilders;\r
- }\r
-\r
- protected boolean isAbstract() {\r
- return isAbstract;\r
- }\r
-\r
- protected List<Type> getImplementsTypes() {\r
- return implementsTypes;\r
- }\r
-\r
- protected List<EnumBuilder> getEnumerations() {\r
- return enumDefinitions;\r
- }\r
-\r
- protected List<Constant> getConstants() {\r
- return constants;\r
- }\r
-\r
- protected List<MethodSignatureBuilder> getMethodDefinitions() {\r
- return methodDefinitions;\r
- }\r
-\r
- protected List<GeneratedTypeBuilder> getEnclosedTypes() {\r
- return enclosedTypes;\r
- }\r
-\r
- protected List<GeneratedTOBuilder> getEnclosedTransferObjects() {\r
- return enclosingTransferObjects;\r
- }\r
-\r
- @Override\r
- public GeneratedTypeBuilder addEnclosingType(String name) {\r
- if (name == null) {\r
- throw new IllegalArgumentException("Name for Enclosing Generated Type cannot be null!");\r
- }\r
- GeneratedTypeBuilder builder = new GeneratedTOBuilderImpl(getFullyQualifiedName(), name);\r
- enclosedTypes.add(builder);\r
- return builder;\r
- }\r
-\r
- @Override\r
- public GeneratedTOBuilder addEnclosingTransferObject(String name) {\r
- if (name == null) {\r
- throw new IllegalArgumentException("Name for Enclosing Generated Transfer Object cannot be null!");\r
- }\r
- GeneratedTOBuilder builder = new GeneratedTOBuilderImpl(getFullyQualifiedName(), name);\r
- enclosingTransferObjects.add(builder);\r
- return builder;\r
- }\r
-\r
- @Override\r
- public void addEnclosingTransferObject(final GeneratedTOBuilder genTOBuilder) {\r
- if (genTOBuilder == null) {\r
- throw new IllegalArgumentException("Parameter genTOBuilder cannot be null!");\r
- }\r
- enclosingTransferObjects.add(genTOBuilder);\r
- }\r
-\r
- @Override\r
- public void addComment(String comment) {\r
- this.comment = comment;\r
- }\r
-\r
- @Override\r
- public AnnotationTypeBuilder addAnnotation(final String packageName, final String name) {\r
- if (packageName == null) {\r
- throw new IllegalArgumentException("Package Name for Annotation Type cannot be null!");\r
- }\r
- if (name == null) {\r
- throw new IllegalArgumentException("Name of Annotation Type cannot be null!");\r
- }\r
-\r
- final AnnotationTypeBuilder builder = new AnnotationTypeBuilderImpl(packageName, name);\r
- annotationBuilders.add(builder);\r
- return builder;\r
- }\r
-\r
- @Override\r
- public void setAbstract(boolean isAbstract) {\r
- this.isAbstract = isAbstract;\r
- }\r
-\r
- @Override\r
- public boolean addImplementsType(Type genType) {\r
- if (genType == null) {\r
- throw new IllegalArgumentException("Type cannot be null");\r
- }\r
- return implementsTypes.add(genType);\r
- }\r
-\r
- @Override\r
- public Constant addConstant(Type type, String name, Object value) {\r
- if (type == null) {\r
- throw new IllegalArgumentException("Returning Type for Constant cannot be null!");\r
- }\r
- if (name == null) {\r
- throw new IllegalArgumentException("Name of constant cannot be null!");\r
- }\r
-\r
- final Constant constant = new ConstantImpl(this, type, name, value);\r
- constants.add(constant);\r
- return constant;\r
- }\r
-\r
- @Override\r
- public EnumBuilder addEnumeration(String name) {\r
- if (name == null) {\r
- throw new IllegalArgumentException("Name of enumeration cannot be null!");\r
- }\r
- final EnumBuilder builder = new EnumerationBuilderImpl(getFullyQualifiedName(), name);\r
- enumDefinitions.add(builder);\r
- return builder;\r
- }\r
-\r
- @Override\r
- public MethodSignatureBuilder addMethod(String name) {\r
- if (name == null) {\r
- throw new IllegalArgumentException("Name of method cannot be null!");\r
- }\r
- final MethodSignatureBuilder builder = new MethodSignatureBuilderImpl(name);\r
- builder.setAccessModifier(AccessModifier.PUBLIC);\r
- builder.setAbstract(true);\r
- methodDefinitions.add(builder);\r
- return builder;\r
- }\r
-\r
- @Override\r
- public boolean containsMethod(String name) {\r
- if (name == null) {\r
- throw new IllegalArgumentException("Parameter name can't be null");\r
- }\r
- for (MethodSignatureBuilder methodDefinition : methodDefinitions) {\r
- if (name.equals(methodDefinition.getName())) {\r
- return true;\r
- }\r
- }\r
- return false;\r
- }\r
- \r
- @Override\r
- public GeneratedPropertyBuilder addProperty(String name) {\r
- final GeneratedPropertyBuilder builder = new GeneratedPropertyBuilderImpl(name);\r
- builder.setAccessModifier(AccessModifier.PUBLIC);\r
- properties.add(builder);\r
- return builder;\r
- }\r
-\r
- @Override\r
- public boolean containsProperty(String name) {\r
- if (name == null) {\r
- throw new IllegalArgumentException("Parameter name can't be null");\r
- }\r
- for (GeneratedPropertyBuilder property : properties) {\r
- if (name.equals(property.getName())) {\r
- return true;\r
- }\r
- }\r
- return false;\r
- }\r
-\r
- @Override\r
- public int hashCode() {\r
- final int prime = 31;\r
- int result = 1;\r
- result = prime * result + ((getName() == null) ? 0 : getName().hashCode());\r
- result = prime * result + ((getPackageName() == null) ? 0 : getPackageName().hashCode());\r
- return result;\r
- }\r
-\r
- @Override\r
- public boolean equals(Object obj) {\r
- if (this == obj) {\r
- return true;\r
- }\r
- if (obj == null) {\r
- return false;\r
- }\r
- if (getClass() != obj.getClass()) {\r
- return false;\r
- }\r
- AbstractGeneratedTypeBuilder other = (AbstractGeneratedTypeBuilder) obj;\r
- if (getName() == null) {\r
- if (other.getName() != null) {\r
- return false;\r
- }\r
- } else if (!getName().equals(other.getName())) {\r
- return false;\r
- }\r
- if (getPackageName() == null) {\r
- if (other.getPackageName() != null) {\r
- return false;\r
- }\r
- } else if (!getPackageName().equals(other.getPackageName())) {\r
- return false;\r
- }\r
- return true;\r
- }\r
-\r
- public Type getParent() {\r
- return null;\r
- }\r
-\r
- protected List<GeneratedPropertyBuilder> getProperties() {\r
- return properties;\r
- }\r
-}\r
+/*
+ * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.yangtools.binding.generator.util.generated.type.builder;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.opendaylight.yangtools.binding.generator.util.AbstractBaseType;
+import org.opendaylight.yangtools.sal.binding.model.api.AccessModifier;
+import org.opendaylight.yangtools.sal.binding.model.api.Constant;
+import org.opendaylight.yangtools.sal.binding.model.api.Type;
+import org.opendaylight.yangtools.sal.binding.model.api.type.builder.AnnotationTypeBuilder;
+import org.opendaylight.yangtools.sal.binding.model.api.type.builder.EnumBuilder;
+import org.opendaylight.yangtools.sal.binding.model.api.type.builder.GeneratedPropertyBuilder;
+import org.opendaylight.yangtools.sal.binding.model.api.type.builder.GeneratedTOBuilder;
+import org.opendaylight.yangtools.sal.binding.model.api.type.builder.GeneratedTypeBuilder;
+import org.opendaylight.yangtools.sal.binding.model.api.type.builder.GeneratedTypeBuilderBase;
+import org.opendaylight.yangtools.sal.binding.model.api.type.builder.MethodSignatureBuilder;
+
+abstract class AbstractGeneratedTypeBuilder<T extends GeneratedTypeBuilderBase<T>> extends AbstractBaseType implements
+ GeneratedTypeBuilderBase<T> {
+
+ private String comment = "";
+
+ private final List<AnnotationTypeBuilder> annotationBuilders = new ArrayList<>();
+ private final List<Type> implementsTypes = new ArrayList<>();
+ private final List<EnumBuilder> enumDefinitions = new ArrayList<>();
+ private final List<Constant> constants = new ArrayList<>();
+ private final List<MethodSignatureBuilder> methodDefinitions = new ArrayList<>();
+ private final List<GeneratedTypeBuilder> enclosedTypes = new ArrayList<>();
+ private final List<GeneratedTOBuilder> enclosedTransferObjects = new ArrayList<>();
+ private final List<GeneratedPropertyBuilder> properties = new ArrayList<>();
+ private boolean isAbstract;
+
+ public AbstractGeneratedTypeBuilder(final String packageName, final String name) {
+ super(packageName, name);
+ }
+
+ protected String getComment() {
+ return comment;
+ }
+
+ protected List<AnnotationTypeBuilder> getAnnotations() {
+ return annotationBuilders;
+ }
+
+ public boolean isAbstract() {
+ return isAbstract;
+ }
+
+ public List<Type> getImplementsTypes() {
+ return implementsTypes;
+ }
+
+ protected List<EnumBuilder> getEnumerations() {
+ return enumDefinitions;
+ }
+
+ protected List<Constant> getConstants() {
+ return constants;
+ }
+
+ public List<MethodSignatureBuilder> getMethodDefinitions() {
+ return methodDefinitions;
+ }
+
+ protected List<GeneratedTypeBuilder> getEnclosedTypes() {
+ return enclosedTypes;
+ }
+
+ protected List<GeneratedTOBuilder> getEnclosedTransferObjects() {
+ return enclosedTransferObjects;
+ }
+
+ protected abstract T thisInstance();
+
+ @Override
+ public GeneratedTOBuilder addEnclosingTransferObject(final String name) {
+ if (name == null) {
+ throw new IllegalArgumentException("Name for Enclosing Generated Transfer Object cannot be null!");
+ }
+ GeneratedTOBuilder builder = new GeneratedTOBuilderImpl(getFullyQualifiedName(), name);
+ enclosedTransferObjects.add(builder);
+ return builder;
+ }
+
+ @Override
+ public T addEnclosingTransferObject(final GeneratedTOBuilder genTOBuilder) {
+ if (genTOBuilder == null) {
+ throw new IllegalArgumentException("Parameter genTOBuilder cannot be null!");
+ }
+ enclosedTransferObjects.add(genTOBuilder);
+ return thisInstance();
+ }
+
+ @Override
+ public T addComment(final String comment) {
+ this.comment = comment;
+ return thisInstance();
+ }
+
+ @Override
+ public AnnotationTypeBuilder addAnnotation(final String packageName, final String name) {
+ if (packageName == null) {
+ throw new IllegalArgumentException("Package Name for Annotation Type cannot be null!");
+ }
+ if (name == null) {
+ throw new IllegalArgumentException("Name of Annotation Type cannot be null!");
+ }
+
+ final AnnotationTypeBuilder builder = new AnnotationTypeBuilderImpl(packageName, name);
+ annotationBuilders.add(builder);
+ return builder;
+ }
+
+ @Override
+ public T setAbstract(final boolean isAbstract) {
+ this.isAbstract = isAbstract;
+ return thisInstance();
+ }
+
+ @Override
+ public T addImplementsType(final Type genType) {
+ if (genType == null) {
+ throw new IllegalArgumentException("Type cannot be null");
+ }
+ implementsTypes.add(genType);
+ return thisInstance();
+ }
+
+ @Override
+ public Constant addConstant(final Type type, final String name, final Object value) {
+ if (type == null) {
+ throw new IllegalArgumentException("Returning Type for Constant cannot be null!");
+ }
+ if (name == null) {
+ throw new IllegalArgumentException("Name of constant cannot be null!");
+ }
+
+ final Constant constant = new ConstantImpl(this, type, name, value);
+ constants.add(constant);
+ return constant;
+ }
+
+ @Override
+ public EnumBuilder addEnumeration(final String name) {
+ if (name == null) {
+ throw new IllegalArgumentException("Name of enumeration cannot be null!");
+ }
+ final EnumBuilder builder = new EnumerationBuilderImpl(getFullyQualifiedName(), name);
+ enumDefinitions.add(builder);
+ return builder;
+ }
+
+ @Override
+ public MethodSignatureBuilder addMethod(final String name) {
+ if (name == null) {
+ throw new IllegalArgumentException("Name of method cannot be null!");
+ }
+ final MethodSignatureBuilder builder = new MethodSignatureBuilderImpl(name);
+ builder.setAccessModifier(AccessModifier.PUBLIC);
+ builder.setAbstract(true);
+ methodDefinitions.add(builder);
+ return builder;
+ }
+
+ @Override
+ public boolean containsMethod(final String name) {
+ if (name == null) {
+ throw new IllegalArgumentException("Parameter name can't be null");
+ }
+ for (MethodSignatureBuilder methodDefinition : methodDefinitions) {
+ if (name.equals(methodDefinition.getName())) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public GeneratedPropertyBuilder addProperty(final String name) {
+ final GeneratedPropertyBuilder builder = new GeneratedPropertyBuilderImpl(name);
+ builder.setAccessModifier(AccessModifier.PUBLIC);
+ properties.add(builder);
+ return builder;
+ }
+
+ @Override
+ public boolean containsProperty(final String name) {
+ if (name == null) {
+ throw new IllegalArgumentException("Parameter name can't be null");
+ }
+ for (GeneratedPropertyBuilder property : properties) {
+ if (name.equals(property.getName())) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((getName() == null) ? 0 : getName().hashCode());
+ result = prime * result + ((getPackageName() == null) ? 0 : getPackageName().hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(final Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ AbstractGeneratedTypeBuilder<?> other = (AbstractGeneratedTypeBuilder<?>) obj;
+ if (getName() == null) {
+ if (other.getName() != null) {
+ return false;
+ }
+ } else if (!getName().equals(other.getName())) {
+ return false;
+ }
+ if (getPackageName() == null) {
+ if (other.getPackageName() != null) {
+ return false;
+ }
+ } else if (!getPackageName().equals(other.getPackageName())) {
+ return false;
+ }
+ return true;
+ }
+
+ public Type getParent() {
+ return null;
+ }
+
+ public List<GeneratedPropertyBuilder> getProperties() {
+ return properties;
+ }
+}