BUG 1131: untangling package cyclic dependencies in yang-parser-impl
[yangtools.git] / yang / yang-parser-impl / src / main / java / org / opendaylight / yangtools / yang / parser / builder / impl / IdentityrefTypeBuilder.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.yangtools.yang.parser.builder.impl;
9
10 import java.util.Collections;
11 import java.util.List;
12
13 import org.opendaylight.yangtools.yang.common.QName;
14 import org.opendaylight.yangtools.yang.model.api.SchemaPath;
15 import org.opendaylight.yangtools.yang.model.api.Status;
16 import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
17 import org.opendaylight.yangtools.yang.model.api.type.LengthConstraint;
18 import org.opendaylight.yangtools.yang.model.api.type.PatternConstraint;
19 import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint;
20 import org.opendaylight.yangtools.yang.model.util.BaseTypes;
21 import org.opendaylight.yangtools.yang.model.util.IdentityrefType;
22 import org.opendaylight.yangtools.yang.parser.builder.api.TypeDefinitionBuilder;
23 import org.opendaylight.yangtools.yang.parser.builder.api.UnknownSchemaNodeBuilder;
24 import org.opendaylight.yangtools.yang.parser.builder.util.AbstractTypeAwareBuilder;
25 import org.opendaylight.yangtools.yang.parser.util.YangParseException;
26
27 import com.google.common.base.Preconditions;
28
29 /**
30  * Builder for YANG identityref type.
31  */
32 public final class IdentityrefTypeBuilder extends AbstractTypeAwareBuilder implements TypeDefinitionBuilder {
33     private static final String NAME = "identityref";
34
35     private final String baseString;
36     private SchemaPath schemaPath;
37     private IdentitySchemaNodeBuilder baseIdentity;
38
39     public IdentityrefTypeBuilder(final String moduleName, final int line, final String baseString,
40             final SchemaPath schemaPath) {
41         super(moduleName, line, BaseTypes.constructQName(NAME));
42         this.baseString = baseString;
43         this.schemaPath = Preconditions.checkNotNull(schemaPath, "Schema Path must not be null");
44
45     }
46
47     @Override
48     public void setQName(final QName qname) {
49         this.qname = qname;
50     }
51
52     @Override
53     public IdentityrefType build() {
54         return IdentityrefType.create(schemaPath, baseIdentity.build());
55     }
56
57     public String getBaseString() {
58         return baseString;
59     }
60
61     public void setBaseIdentity(final IdentitySchemaNodeBuilder baseIdentity) {
62         this.baseIdentity = baseIdentity;
63     }
64
65     @Override
66     public TypeDefinition<?> getType() {
67         return null;
68     }
69
70     @Override
71     public TypeDefinitionBuilder getTypedef() {
72         return null;
73     }
74
75     @Override
76     public void setType(final TypeDefinition<?> type) {
77         throw new YangParseException(getModuleName(), getLine(), "Can not set type to " + NAME);
78     }
79
80     @Override
81     public void setTypedef(final TypeDefinitionBuilder tdb) {
82         throw new YangParseException(getModuleName(), getLine(), "Can not set type to " + NAME);
83     }
84
85     @Override
86     public void setDescription(final String description) {
87         throw new YangParseException(getModuleName(), getLine(), "Can not set description to " + NAME);
88     }
89
90     @Override
91     public void setReference(final String reference) {
92         throw new YangParseException(getModuleName(), getLine(), "Can not set reference to " + NAME);
93     }
94
95     @Override
96     public void setStatus(final Status status) {
97         throw new YangParseException(getModuleName(), getLine(), "Can not set status to " + NAME);
98     }
99
100     @Override
101     public boolean isAddedByUses() {
102         return false;
103     }
104
105     @Override
106     public void setAddedByUses(final boolean addedByUses) {
107         throw new YangParseException(getModuleName(), getLine(), "Identityref type can not be added by uses.");
108     }
109
110     @Override
111     public void addUnknownNodeBuilder(final UnknownSchemaNodeBuilder unknownNode) {
112         throw new YangParseException(getModuleName(), getLine(), "Can not add unknown node to " + NAME);
113     }
114
115     @Override
116     public QName getQName() {
117         return null;
118     }
119
120     @Override
121     public SchemaPath getPath() {
122         return schemaPath;
123     }
124
125     @Override
126     public void setPath(final SchemaPath path) {
127         this.schemaPath = path;
128     }
129
130     @Override
131     public String getDescription() {
132         return null;
133     }
134
135     @Override
136     public String getReference() {
137         return null;
138     }
139
140     @Override
141     public Status getStatus() {
142         return null;
143     }
144
145     @Override
146     public List<RangeConstraint> getRanges() {
147         return Collections.emptyList();
148     }
149
150     @Override
151     public void setRanges(final List<RangeConstraint> ranges) {
152         throw new YangParseException(getModuleName(), getLine(), "Can not set ranges to " + NAME);
153     }
154
155     @Override
156     public List<LengthConstraint> getLengths() {
157         return Collections.emptyList();
158     }
159
160     @Override
161     public void setLengths(final List<LengthConstraint> lengths) {
162         throw new YangParseException(getModuleName(), getLine(), "Can not set lengths to " + NAME);
163     }
164
165     @Override
166     public List<PatternConstraint> getPatterns() {
167         return Collections.emptyList();
168     }
169
170     @Override
171     public void setPatterns(final List<PatternConstraint> patterns) {
172         throw new YangParseException(getModuleName(), getLine(), "Can not set patterns to " + NAME);
173     }
174
175     @Override
176     public Integer getFractionDigits() {
177         return null;
178     }
179
180     @Override
181     public void setFractionDigits(final Integer fractionDigits) {
182         throw new YangParseException(getModuleName(), getLine(), "Can not set fraction digits to " + NAME);
183     }
184
185     @Override
186     public List<UnknownSchemaNodeBuilder> getUnknownNodes() {
187         return Collections.emptyList();
188     }
189
190     @Override
191     public Object getDefaultValue() {
192         return null;
193     }
194
195     @Override
196     public void setDefaultValue(final Object defaultValue) {
197         throw new YangParseException(getModuleName(), getLine(), "Can not set default value to " + NAME);
198     }
199
200     @Override
201     public String getUnits() {
202         return null;
203     }
204     @Override
205     public void setUnits(final String units) {
206         throw new YangParseException(getModuleName(), getLine(), "Can not set units to " + NAME);
207     }
208
209     @Override
210     public String toString() {
211         final StringBuilder result = new StringBuilder(IdentityrefTypeBuilder.class.getSimpleName());
212         result.append("[");
213         result.append(", base=");
214         result.append(baseIdentity);
215         result.append("]");
216         return result.toString();
217     }
218
219 }