2 * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
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
8 package org.opendaylight.mdsal.binding.model.util.generated.type.builder;
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;
18 public final class CodegenEnumerationBuilder extends AbstractEnumerationBuilder {
19 private String description;
20 private String reference;
21 private String moduleName;
22 private SchemaPath schemaPath;
24 public CodegenEnumerationBuilder(final String packageName, final String name) {
25 super(packageName, name);
29 public void setReference(final String reference) {
30 this.reference = reference;
34 public void setModuleName(final String moduleName) {
35 this.moduleName = moduleName;
39 public void setSchemaPath(final SchemaPath schemaPath) {
40 this.schemaPath = schemaPath;
44 public void setDescription(final String description) {
45 this.description = description;
50 public Enumeration toInstance(final Type definingType) {
51 return new EnumerationImpl(this, definingType);
55 EnumPair createEnumPair(final String name, final String mappedName, final int value, final String description) {
56 return new EnumPair(name, mappedName, value, description);
59 private static final class EnumPair extends AbstractPair {
60 private final String description;
62 EnumPair(final String name, final String mappedName, final int value, final String description) {
63 super(name, mappedName, value);
64 this.description = description;
68 public Optional<String> getDescription() {
69 return Optional.ofNullable(description);
73 public Optional<String> getReference() {
74 // TODO Auto-generated method stub
75 return Optional.empty();
79 private static final class EnumerationImpl extends AbstractEnumeration {
81 private final String description;
82 private final String reference;
83 private final String moduleName;
84 private final SchemaPath schemaPath;
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;
95 public TypeComment getComment() {
100 public String getDescription() {
101 return this.description;
105 public String getReference() {
106 return this.reference;
110 public Iterable<QName> getSchemaPath() {
111 return this.schemaPath.getPathFromRoot();
115 public String getModuleName() {
116 return this.moduleName;
120 public Optional<YangSourceDefinition> getYangSourceDefinition() {
121 // TODO Auto-generated method stub
122 return Optional.empty();