2 * Copyright (c) 2015 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
9 package org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.type;
11 import com.google.common.base.Optional;
12 import java.util.Collections;
13 import java.util.List;
14 import org.opendaylight.yangtools.yang.common.QName;
15 import org.opendaylight.yangtools.yang.common.YangConstants;
16 import org.opendaylight.yangtools.yang.model.api.SchemaPath;
17 import org.opendaylight.yangtools.yang.model.api.Status;
18 import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
19 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
20 import org.opendaylight.yangtools.yang.model.api.stmt.TypeStatement;
21 import org.opendaylight.yangtools.yang.model.api.type.LengthConstraint;
22 import org.opendaylight.yangtools.yang.model.api.type.PatternConstraint;
23 import org.opendaylight.yangtools.yang.model.api.type.StringTypeDefinition;
24 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
25 import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.TypeUtils;
26 import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.EffectiveStatementBase;
28 public class StringEffectiveStatementImpl extends EffectiveStatementBase<String, TypeStatement> implements
29 StringTypeDefinition {
31 public static final String LOCAL_NAME = TypeUtils.STRING;
32 private static final QName QNAME = QName.create(YangConstants.RFC6020_YANG_MODULE, LOCAL_NAME);
33 private static final SchemaPath PATH = SchemaPath.create(true, QNAME);
34 private static final String DEFAULT_VALUE = "";
35 private static final String DESCRIPTION = "The string built-in type represents human-readable strings in YANG. "
36 + "Legal characters are tab, carriage return, line feed, and the legal "
37 + "characters of Unicode and ISO/IEC 10646";
38 private static final String REFERENCE = "https://tools.ietf.org/html/rfc6020#section-9.4";
39 private final List<LengthConstraint> lengthConstraints;
40 private final List<PatternConstraint> patternConstraints;
41 private static final String UNITS = "";
43 public StringEffectiveStatementImpl(
44 StmtContext<String, TypeStatement, EffectiveStatement<String, TypeStatement>> ctx) {
47 final LengthConstraint defLength = new LengthConstraintEffectiveImpl(0, Integer.MAX_VALUE, Optional.of(""),
50 lengthConstraints = Collections.singletonList(defLength);
51 patternConstraints = Collections.emptyList();
55 public List<LengthConstraint> getLengthConstraints() {
56 return lengthConstraints;
60 public List<PatternConstraint> getPatternConstraints() {
61 return patternConstraints;
65 public StringTypeDefinition getBaseType() {
70 public String getUnits() {
75 public Object getDefaultValue() {
80 public QName getQName() {
85 public SchemaPath getPath() {
90 public List<UnknownSchemaNode> getUnknownSchemaNodes() {
91 return Collections.emptyList();
95 public String getDescription() {
100 public String getReference() {
105 public Status getStatus() {
106 return Status.CURRENT;
110 public int hashCode() {
111 final int prime = 31;
113 result = prime * result + ((lengthConstraints == null) ? 0 : lengthConstraints.hashCode());
114 result = prime * result + QNAME.hashCode();
115 result = prime * result + PATH.hashCode();
116 result = prime * result + ((patternConstraints == null) ? 0 : patternConstraints.hashCode());
121 public boolean equals(final Object obj) {
128 if (getClass() != obj.getClass()) {
131 StringEffectiveStatementImpl other = (StringEffectiveStatementImpl) obj;
132 if (lengthConstraints == null) {
133 if (other.lengthConstraints != null) {
136 } else if (!lengthConstraints.equals(other.lengthConstraints)) {
139 if (patternConstraints == null) {
140 if (other.patternConstraints != null) {
143 } else if (!patternConstraints.equals(other.patternConstraints)) {
150 public String toString() {
151 StringBuilder builder = new StringBuilder();
152 builder.append(getClass().getSimpleName());
153 builder.append(" [name=");
154 builder.append(QNAME);
155 builder.append(", path=");
156 builder.append(PATH);
157 builder.append(", defaultValue=");
158 builder.append(DEFAULT_VALUE);
159 builder.append(", description=");
160 builder.append(DESCRIPTION);
161 builder.append(", reference=");
162 builder.append(REFERENCE);
163 builder.append(", lengthStatements=");
164 builder.append(lengthConstraints);
165 builder.append(", patterns=");
166 builder.append(patternConstraints);
167 builder.append(", units=");
168 builder.append(UNITS);
170 return builder.toString();