Add alternative enum assigned name mapping
[mdsal.git] / binding / mdsal-binding-generator-util / src / main / java / org / opendaylight / mdsal / binding / model / util / generated / type / builder / RuntimeEnumerationBuilder.java
1 /*
2  * Copyright (c) 2018 Pantheon Technologies, s.r.o. 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.util.generated.type.builder;
9
10 import java.util.Optional;
11 import org.opendaylight.mdsal.binding.model.api.Enumeration;
12 import org.opendaylight.mdsal.binding.model.api.Type;
13 import org.opendaylight.mdsal.binding.model.api.TypeComment;
14 import org.opendaylight.mdsal.binding.model.api.YangSourceDefinition;
15 import org.opendaylight.yangtools.yang.common.QName;
16 import org.opendaylight.yangtools.yang.model.api.SchemaPath;
17
18 public final class RuntimeEnumerationBuilder extends AbstractEnumerationBuilder {
19     public RuntimeEnumerationBuilder(final String packageName, final String name) {
20         super(packageName, name);
21     }
22
23     @Override
24     public void setReference(final String reference) {
25         // No-op
26     }
27
28     @Override
29     public void setModuleName(final String moduleName) {
30         // No-op
31     }
32
33     @Override
34     public void setSchemaPath(final SchemaPath schemaPath) {
35         // No-op
36     }
37
38     @Override
39     public void setDescription(final String description) {
40         // No-op
41     }
42
43     @Override
44     public Enumeration toInstance(final Type definingType) {
45         return new EnumerationImpl(this, definingType);
46     }
47
48     @Override
49     EnumPair createEnumPair(final String name, final String mappedName, final int value, final String description) {
50         return new EnumPair(name, mappedName, value);
51     }
52
53     private static final class EnumPair extends AbstractPair {
54         EnumPair(final String name, final String mappedName, final int value) {
55             super(name, mappedName, value);
56         }
57
58         @Override
59         public Optional<String> getDescription() {
60             throw new UnsupportedOperationException("Not available at runtime");
61         }
62
63         @Override
64         public Optional<String> getReference() {
65             throw new UnsupportedOperationException("Not available at runtime");
66         }
67     }
68
69     private static final class EnumerationImpl extends AbstractEnumeration {
70         EnumerationImpl(final RuntimeEnumerationBuilder builder, final Type definingType) {
71             super(builder, definingType);
72         }
73
74         @Override
75         public TypeComment getComment() {
76             throw new UnsupportedOperationException("Not available at runtime");
77         }
78
79         @Override
80         public String getDescription() {
81             throw new UnsupportedOperationException("Not available at runtime");
82         }
83
84         @Override
85         public String getReference() {
86             throw new UnsupportedOperationException("Not available at runtime");
87         }
88
89         @Override
90         public Iterable<QName> getSchemaPath() {
91             throw new UnsupportedOperationException("Not available at runtime");
92         }
93
94         @Override
95         public String getModuleName() {
96             throw new UnsupportedOperationException("Not available at runtime");
97         }
98
99         @Override
100         public Optional<YangSourceDefinition> getYangSourceDefinition() {
101             throw new UnsupportedOperationException("Not available at runtime");
102         }
103     }
104 }