1 package org.opendaylight.controller.binding.generator.util.generated.type.builder;
3 import java.util.ArrayList;
4 import java.util.Collections;
7 import org.opendaylight.controller.sal.binding.model.api.AnnotationType;
8 import org.opendaylight.controller.sal.binding.model.api.type.builder.AnnotationTypeBuilder;
10 final class AnnotationTypeBuilderImpl implements AnnotationTypeBuilder {
12 private final String packageName;
13 private final String name;
14 private final List<AnnotationTypeBuilder> annotationBuilders;
15 private final List<AnnotationType.Parameter> parameters;
17 public AnnotationTypeBuilderImpl(final String packageName, final String name) {
19 this.packageName = packageName;
22 annotationBuilders = new ArrayList<AnnotationTypeBuilder>();
23 parameters = new ArrayList<AnnotationType.Parameter>();
27 public String getPackageName() {
32 public String getName() {
37 public AnnotationTypeBuilder addAnnotation(final String packageName, final String name) {
38 if (packageName != null && name != null) {
39 final AnnotationTypeBuilder builder = new AnnotationTypeBuilderImpl(packageName, name);
40 if (annotationBuilders.add(builder)) {
48 public boolean addParameter(String paramName, String value) {
49 if ((paramName != null) && (value != null)) {
50 return parameters.add(new ParameterImpl(paramName, value));
56 public boolean addParameters(String paramName, List<String> values) {
57 if ((paramName != null) && (values != null)) {
58 return parameters.add(new ParameterImpl(paramName, values));
64 public AnnotationType toInstance() {
65 return new AnnotationTypeImpl(packageName, name, annotationBuilders, parameters);
69 public int hashCode() {
72 result = prime * result + ((name == null) ? 0 : name.hashCode());
73 result = prime * result
74 + ((packageName == null) ? 0 : packageName.hashCode());
79 public boolean equals(Object obj) {
86 if (getClass() != obj.getClass()) {
89 AnnotationTypeBuilderImpl other = (AnnotationTypeBuilderImpl) obj;
91 if (other.name != null) {
94 } else if (!name.equals(other.name)) {
97 if (packageName == null) {
98 if (other.packageName != null) {
101 } else if (!packageName.equals(other.packageName)) {
108 public String toString() {
109 StringBuilder builder = new StringBuilder();
110 builder.append("AnnotationTypeBuilder [packageName=");
111 builder.append(packageName);
112 builder.append(", name=");
113 builder.append(name);
114 builder.append(", annotationBuilders=");
115 builder.append(annotationBuilders);
116 builder.append(", parameters=");
117 builder.append(parameters);
119 return builder.toString();
122 private static final class AnnotationTypeImpl implements AnnotationType {
124 private final String packageName;
125 private final String name;
126 private List<AnnotationType> annotations;
127 private final List<AnnotationType.Parameter> parameters;
128 private List<String> paramNames;
130 public AnnotationTypeImpl(String packageName, String name,
131 List<AnnotationTypeBuilder> annotationBuilders,
132 List<AnnotationType.Parameter> parameters) {
134 this.packageName = packageName;
137 this.annotations = new ArrayList<AnnotationType>();
138 for (final AnnotationTypeBuilder builder : annotationBuilders) {
139 annotations.add(builder.toInstance());
142 this.annotations = Collections.unmodifiableList(annotations);
143 this.parameters = Collections.unmodifiableList(parameters);
145 paramNames = new ArrayList<String>();
146 for (final AnnotationType.Parameter parameter : parameters) {
147 paramNames.add(parameter.getName());
149 this.paramNames = Collections.unmodifiableList(paramNames);
153 public String getPackageName() {
158 public String getName() {
163 public List<AnnotationType> getAnnotations() {
168 public Parameter getParameter(final String paramName) {
169 if (paramName != null) {
170 for (final AnnotationType.Parameter parameter : parameters) {
171 if (parameter.getName().equals(paramName)) {
180 public List<Parameter> getParameters() {
185 public List<String> getParameterNames() {
190 public boolean containsParameters() {
191 return !parameters.isEmpty();
195 public int hashCode() {
196 final int prime = 31;
198 result = prime * result + ((name == null) ? 0 : name.hashCode());
199 result = prime * result
200 + ((packageName == null) ? 0 : packageName.hashCode());
205 public boolean equals(Object obj) {
212 if (getClass() != obj.getClass()) {
215 AnnotationTypeImpl other = (AnnotationTypeImpl) obj;
217 if (other.name != null) {
220 } else if (!name.equals(other.name)) {
223 if (packageName == null) {
224 if (other.packageName != null) {
227 } else if (!packageName.equals(other.packageName)) {
234 public String toString() {
235 StringBuilder builder = new StringBuilder();
236 builder.append("AnnotationType [packageName=");
237 builder.append(packageName);
238 builder.append(", name=");
239 builder.append(name);
240 builder.append(", annotations=");
241 builder.append(annotations);
242 builder.append(", parameters=");
243 builder.append(parameters);
245 return builder.toString();
249 private static final class ParameterImpl implements AnnotationType.Parameter {
251 private final String name;
252 private final String value;
253 private final List<String> values;
255 public ParameterImpl(String name, String value) {
259 this.values = Collections.emptyList();
262 public ParameterImpl(String name, List<String> values) {
265 this.values = values;
270 public String getName() {
275 public String getValue() {
280 public List<String> getValues() {
285 public int hashCode() {
286 final int prime = 31;
288 result = prime * result + ((name == null) ? 0 : name.hashCode());
293 public boolean equals(Object obj) {
300 if (getClass() != obj.getClass()) {
303 ParameterImpl other = (ParameterImpl) obj;
305 if (other.name != null) {
308 } else if (!name.equals(other.name)) {
315 public String toString() {
316 StringBuilder builder = new StringBuilder();
317 builder.append("ParameterImpl [name=");
318 builder.append(name);
319 builder.append(", value=");
320 builder.append(value);
321 builder.append(", values=");
322 builder.append(values);
324 return builder.toString();