Fix license header violations in yang-parser-impl
[yangtools.git] / yang / yang-parser-impl / src / main / java / org / opendaylight / yangtools / yang / parser / stmt / rfc6020 / effective / type / StringEffectiveStatementImpl.java
1 /*
2  * Copyright (c) 2015 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
9 package org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.type;
10
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;
27
28 public class StringEffectiveStatementImpl extends EffectiveStatementBase<String, TypeStatement> implements
29         StringTypeDefinition {
30
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 = "";
42
43     public StringEffectiveStatementImpl(
44             StmtContext<String, TypeStatement, EffectiveStatement<String, TypeStatement>> ctx) {
45         super(ctx);
46
47         final LengthConstraint defLength = new LengthConstraintEffectiveImpl(0, Integer.MAX_VALUE, Optional.of(""),
48                 Optional.of(""));
49
50         lengthConstraints = Collections.singletonList(defLength);
51         patternConstraints = Collections.emptyList();
52     }
53
54     @Override
55     public List<LengthConstraint> getLengthConstraints() {
56         return lengthConstraints;
57     }
58
59     @Override
60     public List<PatternConstraint> getPatternConstraints() {
61         return patternConstraints;
62     }
63
64     @Override
65     public StringTypeDefinition getBaseType() {
66         return null;
67     }
68
69     @Override
70     public String getUnits() {
71         return UNITS;
72     }
73
74     @Override
75     public Object getDefaultValue() {
76         return DEFAULT_VALUE;
77     }
78
79     @Override
80     public QName getQName() {
81         return QNAME;
82     }
83
84     @Override
85     public SchemaPath getPath() {
86         return PATH;
87     }
88
89     @Override
90     public List<UnknownSchemaNode> getUnknownSchemaNodes() {
91         return Collections.emptyList();
92     }
93
94     @Override
95     public String getDescription() {
96         return DESCRIPTION;
97     }
98
99     @Override
100     public String getReference() {
101         return REFERENCE;
102     }
103
104     @Override
105     public Status getStatus() {
106         return Status.CURRENT;
107     }
108
109     @Override
110     public int hashCode() {
111         final int prime = 31;
112         int result = 1;
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());
117         return result;
118     }
119
120     @Override
121     public boolean equals(final Object obj) {
122         if (this == obj) {
123             return true;
124         }
125         if (obj == null) {
126             return false;
127         }
128         if (getClass() != obj.getClass()) {
129             return false;
130         }
131         StringEffectiveStatementImpl other = (StringEffectiveStatementImpl) obj;
132         if (lengthConstraints == null) {
133             if (other.lengthConstraints != null) {
134                 return false;
135             }
136         } else if (!lengthConstraints.equals(other.lengthConstraints)) {
137             return false;
138         }
139         if (patternConstraints == null) {
140             if (other.patternConstraints != null) {
141                 return false;
142             }
143         } else if (!patternConstraints.equals(other.patternConstraints)) {
144             return false;
145         }
146         return true;
147     }
148
149     @Override
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);
169         builder.append("]");
170         return builder.toString();
171     }
172 }