*/
package org.opendaylight.yangtools.binding.generator.util.generated.type.builder;
-import org.opendaylight.yangtools.sal.binding.model.api.*;
-import org.opendaylight.yangtools.sal.binding.model.api.type.builder.*;
-
import java.util.ArrayList;
-import java.util.Collections;
import java.util.List;
-public final class GeneratedTOBuilderImpl extends AbstractGeneratedTypeBuilder implements GeneratedTOBuilder {
+import org.opendaylight.yangtools.sal.binding.model.api.GeneratedProperty;
+import org.opendaylight.yangtools.sal.binding.model.api.GeneratedTransferObject;
+import org.opendaylight.yangtools.sal.binding.model.api.ParameterizedType;
+import org.opendaylight.yangtools.sal.binding.model.api.Restrictions;
+import org.opendaylight.yangtools.sal.binding.model.api.Type;
+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.MethodSignatureBuilder;
+
+public final class GeneratedTOBuilderImpl extends AbstractGeneratedTypeBuilder<GeneratedTOBuilder> implements
+ GeneratedTOBuilder {
private GeneratedTransferObject extendsType;
- private final List<GeneratedPropertyBuilder> properties = new ArrayList<>();
private final List<GeneratedPropertyBuilder> equalsProperties = new ArrayList<>();
private final List<GeneratedPropertyBuilder> hashProperties = new ArrayList<>();
private final List<GeneratedPropertyBuilder> toStringProperties = new ArrayList<>();
+ private boolean isTypedef = false;
private boolean isUnionType = false;
+ private boolean isUnionTypeBuilder = false;
+ private Restrictions restrictions;
+ private GeneratedPropertyBuilder SUID;
public GeneratedTOBuilderImpl(String packageName, String name) {
super(packageName, name);
}
@Override
- public void setExtendsType(final GeneratedTransferObject genTransObj) {
+ public GeneratedTOBuilder setExtendsType(final GeneratedTransferObject genTransObj) {
if (genTransObj == null) {
throw new IllegalArgumentException("Generated Transfer Object cannot be null!");
}
extendsType = genTransObj;
- }
-
- @Override
- public GeneratedPropertyBuilder addProperty(String name) {
- final GeneratedPropertyBuilder builder = new GeneratedPropertyBuilderImpl(name);
- builder.setAccessModifier(AccessModifier.PUBLIC);
- properties.add(builder);
- return builder;
- }
-
- @Override
- public boolean containsProperty(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;
+ return this;
}
/**
* Name of Method cannot be <code>null</code>, if it is <code>null</code>
* the method SHOULD throw {@link IllegalArgumentException} <br>
* By <i>Default</i> the MethodSignatureBuilder SHOULD be pre-set as
- * {@link MethodSignatureBuilder#setAbstract(false)},
- * {@link MethodSignatureBuilder#setFinal(false)} and
- * {@link MethodSignatureBuilder#setAccessModifier(PUBLIC)}
- *
+ * {@link MethodSignatureBuilder#setAbstract(boolean)},
+ * {TypeMemberBuilder#setFinal(boolean)} and
+ * {TypeMemberBuilder#setAccessModifier(boolean)}
+ *
* @param name
* Name of Method
* @return <code>new</code> instance of Method Signature Builder.
}
@Override
- public boolean addEqualsIdentity(GeneratedPropertyBuilder property) {
- return equalsProperties.add(property);
+ public GeneratedTOBuilder addEqualsIdentity(GeneratedPropertyBuilder property) {
+ equalsProperties.add(property);
+ return this;
}
@Override
- public boolean addHashIdentity(GeneratedPropertyBuilder property) {
- return hashProperties.add(property);
+ public GeneratedTOBuilder addHashIdentity(GeneratedPropertyBuilder property) {
+ hashProperties.add(property);
+ return this;
}
@Override
- public boolean addToStringProperty(GeneratedPropertyBuilder property) {
- return toStringProperties.add(property);
+ public GeneratedTOBuilder addToStringProperty(GeneratedPropertyBuilder property) {
+ toStringProperties.add(property);
+ return this;
+ }
+
+ @Override
+ protected GeneratedTOBuilder thisInstance() {
+ return this;
+ }
+
+ @Override
+ public void setRestrictions(Restrictions restrictions) {
+ this.restrictions = restrictions;
+ }
+
+ @Override
+ public void setSUID(GeneratedPropertyBuilder suid) {
+ this.SUID = suid;
}
@Override
public GeneratedTransferObject toInstance() {
- return new GeneratedTransferObjectImpl(null, getPackageName(), getName(), getComment(), getAnnotations(),
- isAbstract(), extendsType, getImplementsTypes(), getEnclosedTypes(), getEnclosedTransferObjects(),
- getConstants(), getEnumerations(), getMethodDefinitions(), properties, equalsProperties,
- hashProperties, toStringProperties, isUnionType);
+ return new GeneratedTransferObjectImpl(this);
}
@Override
builder.append(getConstants());
builder.append(", enumerations=");
builder.append(getEnumerations());
- builder.append(", properties=");
- builder.append(properties);
builder.append(", equalsProperties=");
builder.append(equalsProperties);
builder.append(", hashCodeProperties=");
return builder.toString();
}
+ @Override
+ public void setTypedef(boolean isTypedef) {
+ this.isTypedef = isTypedef;
+ }
+
@Override
public void setIsUnion(boolean isUnion) {
this.isUnionType = isUnion;
}
+ @Override
+ public void setIsUnionBuilder(boolean isUnionTypeBuilder) {
+ this.isUnionTypeBuilder = isUnionTypeBuilder;
+ }
+
private static final class GeneratedTransferObjectImpl extends AbstractGeneratedType implements
GeneratedTransferObject {
- private final List<GeneratedProperty> properties;
private final List<GeneratedProperty> equalsProperties;
private final List<GeneratedProperty> hashCodeProperties;
private final List<GeneratedProperty> stringProperties;
private final GeneratedTransferObject extendsType;
+ private final boolean isTypedef;
private final boolean isUnionType;
+ private final boolean isUnionTypeBuilder;
+ private final Restrictions restrictions;
+ private final GeneratedProperty SUID;
- GeneratedTransferObjectImpl(final Type parent, final String packageName, final String name,
- final String comment, final List<AnnotationTypeBuilder> annotationBuilders, final boolean isAbstract,
- final GeneratedTransferObject extendsType, final List<Type> implementsTypes,
- final List<GeneratedTypeBuilder> enclosedGenTypeBuilders,
- final List<GeneratedTOBuilder> enclosedGenTOBuilders, final List<Constant> constants,
- final List<EnumBuilder> enumBuilders, final List<MethodSignatureBuilder> methodBuilders,
- final List<GeneratedPropertyBuilder> propBuilders, final List<GeneratedPropertyBuilder> equalsBuilders,
- final List<GeneratedPropertyBuilder> hashCodeBuilders,
- final List<GeneratedPropertyBuilder> stringBuilders, final boolean isUnionType) {
- super(parent, packageName, name, comment, annotationBuilders, isAbstract, implementsTypes,
- enclosedGenTypeBuilders, enclosedGenTOBuilders, enumBuilders, constants, methodBuilders);
- this.extendsType = extendsType;
- this.properties = toUnmodifiableProperties(propBuilders);
- this.equalsProperties = toUnmodifiableProperties(equalsBuilders);
- this.hashCodeProperties = toUnmodifiableProperties(hashCodeBuilders);
- this.stringProperties = toUnmodifiableProperties(stringBuilders);
- this.isUnionType = isUnionType;
+ public GeneratedTransferObjectImpl(GeneratedTOBuilderImpl builder) {
+ super(builder);
+ this.extendsType = builder.extendsType;
+ this.equalsProperties = toUnmodifiableProperties(builder.equalsProperties);
+ this.hashCodeProperties = toUnmodifiableProperties(builder.hashProperties);
+ this.stringProperties = toUnmodifiableProperties(builder.toStringProperties);
+ this.isTypedef = builder.isTypedef;
+ this.isUnionType = builder.isUnionType;
+ this.isUnionTypeBuilder = builder.isUnionTypeBuilder;
+ this.restrictions = builder.restrictions;
+ if (builder.SUID == null) {
+ this.SUID = null;
+ } else {
+ this.SUID = builder.SUID.toInstance(GeneratedTransferObjectImpl.this);
+ }
}
@Override
- public boolean isUnionType() {
- return isUnionType;
+ public boolean isTypedef() {
+ return isTypedef;
}
- private List<GeneratedProperty> toUnmodifiableProperties(final List<GeneratedPropertyBuilder> propBuilders) {
- final List<GeneratedProperty> properties = new ArrayList<>();
- for (final GeneratedPropertyBuilder builder : propBuilders) {
- properties.add(builder.toInstance(this));
- }
- return Collections.unmodifiableList(properties);
+ @Override
+ public boolean isUnionType() {
+ return isUnionType;
}
@Override
- public GeneratedTransferObject getExtends() {
- return extendsType;
+ public boolean isUnionTypeBuilder() {
+ return isUnionTypeBuilder;
}
@Override
- public List<GeneratedProperty> getProperties() {
- return properties;
+ public GeneratedTransferObject getSuperType() {
+ return extendsType;
}
@Override
return stringProperties;
}
+ @Override
+ public Restrictions getRestrictions() {
+ return restrictions;
+ }
+
+ @Override
+ public GeneratedProperty getSUID() {
+ return SUID;
+ }
+
@Override
public String toString() {
+ if(isTypedef) {
+ return serializeTypedef(this);
+ }
StringBuilder builder = new StringBuilder();
builder.append("GeneratedTransferObject [packageName=");
builder.append(getPackageName());
builder.append(getAnnotations());
builder.append(getComment());
builder.append(", extends=");
- builder.append(getExtends());
+ builder.append(getSuperType());
builder.append(", implements=");
builder.append(getImplements());
builder.append(", enclosedTypes=");
builder.append(", enumerations=");
builder.append(getEnumerations());
builder.append(", properties=");
- builder.append(properties);
+ builder.append(getProperties());
builder.append(", equalsProperties=");
builder.append(equalsProperties);
builder.append(", hashCodeProperties=");
builder.append("]");
return builder.toString();
}
+
+ public String serializeTypedef(Type type) {
+ if (type instanceof ParameterizedType) {
+ ParameterizedType parameterizedType = (ParameterizedType) type;
+ StringBuffer sb = new StringBuffer();
+ sb.append(parameterizedType.getRawType().getFullyQualifiedName());
+ sb.append("<");
+ boolean first = true;
+ for (Type parameter : parameterizedType.getActualTypeArguments()) {
+ if (first) {
+ first = false;
+ } else {
+ sb.append(",");
+ }
+ sb.append(serializeTypedef(parameter));
+ }
+ sb.append(">");
+ return sb.toString();
+ } else {
+ return type.getFullyQualifiedName();
+ }
+ }
+
}
}