Generate javadoc for TypeObjects
[mdsal.git] / binding / mdsal-binding-model-ri / src / main / java / org / opendaylight / mdsal / binding / model / ri / generated / type / builder / CodegenEnumerationBuilder.java
1 /*
2  * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package org.opendaylight.mdsal.binding.model.ri.generated.type.builder;
9
10 import static java.util.Objects.requireNonNull;
11
12 import java.util.Optional;
13 import org.opendaylight.mdsal.binding.model.api.Enumeration;
14 import org.opendaylight.mdsal.binding.model.api.JavaTypeName;
15 import org.opendaylight.mdsal.binding.model.api.TypeComment;
16 import org.opendaylight.mdsal.binding.model.api.YangSourceDefinition;
17 import org.opendaylight.yangtools.yang.common.QName;
18 import org.opendaylight.yangtools.yang.model.api.SchemaPath;
19 import org.opendaylight.yangtools.yang.model.api.Status;
20
21 public final class CodegenEnumerationBuilder extends AbstractEnumerationBuilder {
22     private String description;
23     private String reference;
24     private String moduleName;
25     private SchemaPath schemaPath;
26     private YangSourceDefinition definition;
27
28     public CodegenEnumerationBuilder(final JavaTypeName identifier) {
29         super(identifier);
30     }
31
32     @Override
33     public void setReference(final String reference) {
34         this.reference = reference;
35     }
36
37     @Override
38     public void setModuleName(final String moduleName) {
39         this.moduleName = moduleName;
40     }
41
42     @Override
43     public void setSchemaPath(final SchemaPath schemaPath) {
44         this.schemaPath = schemaPath;
45     }
46
47     @Override
48     public void setDescription(final String description) {
49         this.description = description;
50     }
51
52     @Override
53     public void setYangSourceDefinition(final YangSourceDefinition yangSourceDefinition) {
54         this.definition = yangSourceDefinition;
55     }
56
57     @Override
58     public Enumeration toInstance() {
59         return new EnumerationImpl(this);
60     }
61
62     @Override
63     EnumPair createEnumPair(final String name, final String mappedName, final int value, final Status status,
64             final String enumDescription, final String enumReference) {
65         return new EnumPair(name, mappedName, value, status, enumDescription, enumReference);
66     }
67
68     private static final class EnumPair extends AbstractPair {
69         private final String description;
70         private final String reference;
71         private final Status status;
72
73         EnumPair(final String name, final String mappedName, final int value, final Status status,
74                 final String description, final String reference) {
75             super(name, mappedName, value);
76             this.status = requireNonNull(status);
77             this.description = description;
78             this.reference = reference;
79         }
80
81         @Override
82         public Optional<String> getDescription() {
83             return Optional.ofNullable(description);
84         }
85
86         @Override
87         public Optional<String> getReference() {
88             return Optional.ofNullable(reference);
89         }
90
91         @Override
92         public Status getStatus() {
93             return status;
94         }
95     }
96
97     private static final class EnumerationImpl extends AbstractEnumeration {
98         private final String description;
99         private final String reference;
100         private final String moduleName;
101         private final SchemaPath schemaPath;
102         private final YangSourceDefinition definition;
103
104         EnumerationImpl(final CodegenEnumerationBuilder builder) {
105             super(builder);
106             description = builder.description;
107             moduleName = builder.moduleName;
108             schemaPath = builder.schemaPath;
109             reference = builder.reference;
110             definition = builder.definition;
111         }
112
113         @Override
114         public TypeComment getComment() {
115             return null;
116         }
117
118         @Override
119         public String getDescription() {
120             return description;
121         }
122
123         @Override
124         public String getReference() {
125             return reference;
126         }
127
128         @Override
129         public Iterable<QName> getSchemaPath() {
130             return schemaPath.getPathFromRoot();
131         }
132
133         @Override
134         public String getModuleName() {
135             return moduleName;
136         }
137
138         @Override
139         public Optional<YangSourceDefinition> getYangSourceDefinition() {
140             return Optional.ofNullable(definition);
141         }
142     }
143 }