Do not use ListenerRegistration
[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.model.api.Status;
18
19 public final class CodegenEnumerationBuilder extends AbstractEnumerationBuilder {
20     private String description;
21     private String reference;
22     private String moduleName;
23     private YangSourceDefinition definition;
24
25     public CodegenEnumerationBuilder(final JavaTypeName identifier) {
26         super(identifier);
27     }
28
29     @Override
30     public void setReference(final String reference) {
31         this.reference = reference;
32     }
33
34     @Override
35     public void setModuleName(final String moduleName) {
36         this.moduleName = moduleName;
37     }
38
39     @Override
40     public void setDescription(final String description) {
41         this.description = description;
42     }
43
44     @Override
45     public void setYangSourceDefinition(final YangSourceDefinition yangSourceDefinition) {
46         definition = yangSourceDefinition;
47     }
48
49     @Override
50     public Enumeration toInstance() {
51         return new EnumerationImpl(this);
52     }
53
54     @Override
55     EnumPair createEnumPair(final String name, final String mappedName, final int value, final Status status,
56             final String enumDescription, final String enumReference) {
57         return new EnumPair(name, mappedName, value, status, enumDescription, enumReference);
58     }
59
60     private static final class EnumPair extends AbstractPair {
61         private final String description;
62         private final String reference;
63         private final Status status;
64
65         EnumPair(final String name, final String mappedName, final int value, final Status status,
66                 final String description, final String reference) {
67             super(name, mappedName, value);
68             this.status = requireNonNull(status);
69             this.description = description;
70             this.reference = reference;
71         }
72
73         @Override
74         public Optional<String> getDescription() {
75             return Optional.ofNullable(description);
76         }
77
78         @Override
79         public Optional<String> getReference() {
80             return Optional.ofNullable(reference);
81         }
82
83         @Override
84         public Status getStatus() {
85             return status;
86         }
87     }
88
89     private static final class EnumerationImpl extends AbstractEnumeration {
90         private final String description;
91         private final String reference;
92         private final String moduleName;
93         private final YangSourceDefinition definition;
94
95         EnumerationImpl(final CodegenEnumerationBuilder builder) {
96             super(builder);
97             description = builder.description;
98             moduleName = builder.moduleName;
99             reference = builder.reference;
100             definition = builder.definition;
101         }
102
103         @Override
104         public TypeComment getComment() {
105             return null;
106         }
107
108         @Override
109         public String getDescription() {
110             return description;
111         }
112
113         @Override
114         public String getReference() {
115             return reference;
116         }
117
118         @Override
119         public String getModuleName() {
120             return moduleName;
121         }
122
123         @Override
124         public Optional<YangSourceDefinition> getYangSourceDefinition() {
125             return Optional.ofNullable(definition);
126         }
127     }
128 }