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 static java.util.Objects.requireNonNull;
12 import java.util.Optional;
13 import org.opendaylight.mdsal.binding.model.api.Enumeration;
14 import org.opendaylight.mdsal.binding.model.api.Type;
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;
21 public final class CodegenEnumerationBuilder extends AbstractEnumerationBuilder {
22 private String description;
23 private String reference;
24 private String moduleName;
25 private SchemaPath schemaPath;
27 public CodegenEnumerationBuilder(final String packageName, final String name) {
28 super(packageName, name);
32 public void setReference(final String reference) {
33 this.reference = reference;
37 public void setModuleName(final String moduleName) {
38 this.moduleName = moduleName;
42 public void setSchemaPath(final SchemaPath schemaPath) {
43 this.schemaPath = schemaPath;
47 public void setDescription(final String description) {
48 this.description = description;
53 public Enumeration toInstance(final Type definingType) {
54 return new EnumerationImpl(this, definingType);
58 EnumPair createEnumPair(final String name, final String mappedName, final int value, final Status status,
59 final String description, final String reference) {
60 return new EnumPair(name, mappedName, value, status, description, reference);
63 private static final class EnumPair extends AbstractPair {
64 private final String description;
65 private final String reference;
66 private final Status status;
68 EnumPair(final String name, final String mappedName, final int value, final Status status, final String description,
69 final String reference) {
70 super(name, mappedName, value);
71 this.status = requireNonNull(status);
72 this.description = description;
73 this.reference = reference;
77 public Optional<String> getDescription() {
78 return Optional.ofNullable(description);
82 public Optional<String> getReference() {
83 return Optional.ofNullable(reference);
87 public Status getStatus() {
92 private static final class EnumerationImpl extends AbstractEnumeration {
94 private final String description;
95 private final String reference;
96 private final String moduleName;
97 private final SchemaPath schemaPath;
99 EnumerationImpl(final CodegenEnumerationBuilder builder, final Type definingType) {
100 super(builder, definingType);
101 this.description = builder.description;
102 this.moduleName = builder.moduleName;
103 this.schemaPath = builder.schemaPath;
104 this.reference = builder.reference;
108 public TypeComment getComment() {
113 public String getDescription() {
114 return this.description;
118 public String getReference() {
119 return this.reference;
123 public Iterable<QName> getSchemaPath() {
124 return this.schemaPath.getPathFromRoot();
128 public String getModuleName() {
129 return this.moduleName;
133 public Optional<YangSourceDefinition> getYangSourceDefinition() {
134 return Optional.empty();