X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fsal%2Fyang-prototype%2Fcode-generator%2Fbinding-generator-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Fbinding%2Fgenerator%2Fimpl%2FAnnotationTypeBuilderImpl.java;fp=opendaylight%2Fsal%2Fyang-prototype%2Fcode-generator%2Fbinding-generator-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Fbinding%2Fgenerator%2Fimpl%2FAnnotationTypeBuilderImpl.java;h=ef64214a6a0b2b954fc87f5fabbe205909f17821;hb=4221068644c7e8d08880b4d54e2a099a646796b9;hp=0000000000000000000000000000000000000000;hpb=2f3199b3a037b532cffe917451205e948be1697b;p=controller.git diff --git a/opendaylight/sal/yang-prototype/code-generator/binding-generator-impl/src/main/java/org/opendaylight/controller/sal/binding/generator/impl/AnnotationTypeBuilderImpl.java b/opendaylight/sal/yang-prototype/code-generator/binding-generator-impl/src/main/java/org/opendaylight/controller/sal/binding/generator/impl/AnnotationTypeBuilderImpl.java new file mode 100644 index 0000000000..ef64214a6a --- /dev/null +++ b/opendaylight/sal/yang-prototype/code-generator/binding-generator-impl/src/main/java/org/opendaylight/controller/sal/binding/generator/impl/AnnotationTypeBuilderImpl.java @@ -0,0 +1,327 @@ +package org.opendaylight.controller.sal.binding.generator.impl; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +import org.opendaylight.controller.sal.binding.model.api.AnnotationType; +import org.opendaylight.controller.sal.binding.model.api.type.builder.AnnotationTypeBuilder; + +final class AnnotationTypeBuilderImpl implements AnnotationTypeBuilder { + + private final String packageName; + private final String name; + private final List annotationBuilders; + private final List parameters; + + public AnnotationTypeBuilderImpl(final String packageName, final String name) { + super(); + this.packageName = packageName; + this.name = name; + + annotationBuilders = new ArrayList(); + parameters = new ArrayList(); + } + + @Override + public String getPackageName() { + return packageName; + } + + @Override + public String getName() { + return name; + } + + @Override + public AnnotationTypeBuilder addAnnotation(final String packageName, final String name) { + if (packageName != null && name != null) { + final AnnotationTypeBuilder builder = new AnnotationTypeBuilderImpl(packageName, name); + if (annotationBuilders.add(builder)) { + return builder; + } + } + return null; + } + + @Override + public boolean addParameter(String paramName, String value) { + if ((paramName != null) && (value != null)) { + return parameters.add(new ParameterImpl(paramName, value)); + } + return false; + } + + @Override + public boolean addParameters(String paramName, List values) { + if ((paramName != null) && (values != null)) { + return parameters.add(new ParameterImpl(paramName, values)); + } + return false; + } + + @Override + public AnnotationType toInstance() { + return new AnnotationTypeImpl(packageName, name, annotationBuilders, parameters); + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((name == null) ? 0 : name.hashCode()); + result = prime * result + + ((packageName == null) ? 0 : packageName.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + AnnotationTypeBuilderImpl other = (AnnotationTypeBuilderImpl) obj; + if (name == null) { + if (other.name != null) { + return false; + } + } else if (!name.equals(other.name)) { + return false; + } + if (packageName == null) { + if (other.packageName != null) { + return false; + } + } else if (!packageName.equals(other.packageName)) { + return false; + } + return true; + } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(); + builder.append("AnnotationTypeBuilder [packageName="); + builder.append(packageName); + builder.append(", name="); + builder.append(name); + builder.append(", annotationBuilders="); + builder.append(annotationBuilders); + builder.append(", parameters="); + builder.append(parameters); + builder.append("]"); + return builder.toString(); + } + + private static final class AnnotationTypeImpl implements AnnotationType { + + private final String packageName; + private final String name; + private List annotations; + private final List parameters; + private List paramNames; + + public AnnotationTypeImpl(String packageName, String name, + List annotationBuilders, + List parameters) { + super(); + this.packageName = packageName; + this.name = name; + + this.annotations = new ArrayList(); + for (final AnnotationTypeBuilder builder : annotationBuilders) { + annotations.add(builder.toInstance()); + } + + this.annotations = Collections.unmodifiableList(annotations); + this.parameters = Collections.unmodifiableList(parameters); + + paramNames = new ArrayList(); + for (final AnnotationType.Parameter parameter : parameters) { + paramNames.add(parameter.getName()); + } + this.paramNames = Collections.unmodifiableList(paramNames); + } + + @Override + public String getPackageName() { + return packageName; + } + + @Override + public String getName() { + return name; + } + + @Override + public List getAnnotations() { + return annotations; + } + + @Override + public Parameter getParameter(final String paramName) { + if (paramName != null) { + for (final AnnotationType.Parameter parameter : parameters) { + if (parameter.getName().equals(paramName)) { + return parameter; + } + } + } + return null; + } + + @Override + public List getParameters() { + return parameters; + } + + @Override + public List getParameterNames() { + return paramNames; + } + + @Override + public boolean containsParameters() { + return !parameters.isEmpty(); + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((name == null) ? 0 : name.hashCode()); + result = prime * result + + ((packageName == null) ? 0 : packageName.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + AnnotationTypeImpl other = (AnnotationTypeImpl) obj; + if (name == null) { + if (other.name != null) { + return false; + } + } else if (!name.equals(other.name)) { + return false; + } + if (packageName == null) { + if (other.packageName != null) { + return false; + } + } else if (!packageName.equals(other.packageName)) { + return false; + } + return true; + } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(); + builder.append("AnnotationType [packageName="); + builder.append(packageName); + builder.append(", name="); + builder.append(name); + builder.append(", annotations="); + builder.append(annotations); + builder.append(", parameters="); + builder.append(parameters); + builder.append("]"); + return builder.toString(); + } + } + + private static final class ParameterImpl implements AnnotationType.Parameter { + + private final String name; + private final String value; + private final List values; + + public ParameterImpl(String name, String value) { + super(); + this.name = name; + this.value = value; + this.values = Collections.emptyList(); + } + + public ParameterImpl(String name, List values) { + super(); + this.name = name; + this.values = values; + this.value = null; + } + + @Override + public String getName() { + return name; + } + + @Override + public String getValue() { + return value; + } + + @Override + public List getValues() { + return values; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((name == null) ? 0 : name.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + ParameterImpl other = (ParameterImpl) obj; + if (name == null) { + if (other.name != null) { + return false; + } + } else if (!name.equals(other.name)) { + return false; + } + return true; + } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(); + builder.append("ParameterImpl [name="); + builder.append(name); + builder.append(", value="); + builder.append(value); + builder.append(", values="); + builder.append(values); + builder.append("]"); + return builder.toString(); + } + } +}