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