2 * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
\r
4 * This program and the accompanying materials are made available under the
\r
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
\r
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
\r
8 package org.opendaylight.controller.model.parser.builder;
\r
10 import java.util.List;
\r
12 import org.opendaylight.controller.model.parser.api.SchemaNodeBuilder;
\r
13 import org.opendaylight.controller.model.parser.api.TypeAwareBuilder;
\r
14 import org.opendaylight.controller.model.parser.api.TypeDefinitionBuilder;
\r
15 import org.opendaylight.controller.model.util.UnknownType;
\r
16 import org.opendaylight.controller.model.util.YangTypesConverter;
\r
17 import org.opendaylight.controller.yang.common.QName;
\r
18 import org.opendaylight.controller.yang.model.api.ExtensionDefinition;
\r
19 import org.opendaylight.controller.yang.model.api.SchemaPath;
\r
20 import org.opendaylight.controller.yang.model.api.Status;
\r
21 import org.opendaylight.controller.yang.model.api.TypeDefinition;
\r
24 public class TypedefBuilder implements TypeDefinitionBuilder, SchemaNodeBuilder, TypeAwareBuilder {
\r
26 private final QName qname;
\r
27 private SchemaPath schemaPath;
\r
28 private TypeDefinition<?> baseType;
\r
30 private String description;
\r
31 private String reference;
\r
32 private Status status;
\r
34 TypedefBuilder(QName qname) {
\r
39 public TypeDefinition<? extends TypeDefinition<?>> build() {
\r
40 final TypeDefinition<?> type = YangTypesConverter.javaTypeForBaseYangType(qname);
\r
44 if(baseType != null) {
\r
46 TypeDefinitionImpl instance = new TypeDefinitionImpl(qname);
\r
47 instance.setDescription(description);
\r
48 instance.setReference(reference);
\r
49 instance.setStatus(status);
\r
50 instance.setPath(schemaPath);
\r
51 instance.setBaseType(baseType);
\r
55 final UnknownType.Builder unknownBuilder = new UnknownType.Builder(qname, description, reference);
\r
56 unknownBuilder.status(status);
\r
57 return unknownBuilder.build();
\r
63 public QName getQName() {
\r
68 public void setPath(final SchemaPath schemaPath) {
\r
69 this.schemaPath = schemaPath;
\r
73 public void setDescription(final String description) {
\r
74 this.description = description;
\r
78 public void setReference(final String reference) {
\r
79 this.reference = reference;
\r
83 public void setStatus(final Status status) {
\r
84 if(status != null) {
\r
85 this.status = status;
\r
90 public TypeDefinition<?> getType() {
\r
95 public void setType(TypeDefinition<?> baseType) {
\r
96 this.baseType = baseType;
\r
100 public TypeDefinition<?> getBaseType() {
\r
106 private static class TypeDefinitionImpl<T extends TypeDefinition<T>> implements TypeDefinition<T> {
\r
108 private final QName qname;
\r
109 private SchemaPath path;
\r
110 private String description;
\r
111 private String reference;
\r
112 private Status status = Status.CURRENT;
\r
113 private T baseType;
\r
115 private TypeDefinitionImpl(QName qname) {
\r
116 this.qname = qname;
\r
120 public QName getQName() {
\r
125 public SchemaPath getPath() {
\r
128 private void setPath(SchemaPath path) {
\r
133 public String getDescription() {
\r
134 return description;
\r
136 private void setDescription(String description) {
\r
137 this.description = description;
\r
141 public String getReference() {
\r
144 private void setReference(String reference) {
\r
145 this.reference = reference;
\r
149 public Status getStatus() {
\r
152 private void setStatus(Status status) {
\r
153 this.status = status;
\r
157 public T getBaseType() {
\r
160 private void setBaseType(T type) {
\r
161 this.baseType = type;
\r
165 public String getUnits() {
\r
166 // TODO Auto-generated method stub
\r
171 public Object getDefaultValue() {
\r
172 // TODO Auto-generated method stub
\r
177 public List<ExtensionDefinition> getExtensionSchemaNodes() {
\r
178 // TODO Auto-generated method stub
\r
183 public String toString() {
\r
184 final StringBuilder sb = new StringBuilder(TypeDefinitionImpl.class.getSimpleName());
\r
186 sb.append("qname="+ qname);
\r
187 sb.append(", path="+ path);
\r
188 sb.append(", description="+ description);
\r
189 sb.append(", reference="+ reference);
\r
190 sb.append(", status="+ status);
\r
191 sb.append(", baseType="+ baseType +"]");
\r
192 return sb.toString();
\r