blob: a89c09ed2528f20d3466d7eed37abf93ea6ac004 [file] [log] [blame]
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +05301/*
2 * Copyright 2016-present Open Networking Laboratory
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package org.onosproject.yangutils.datamodel;
18
Bharat saraswal96dfef02016-06-16 00:29:12 +053019import java.io.Serializable;
20
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +053021/*-
22 * Reference RFC 6020.
23 *
24 * Binary can be restricted with "length" statements alone.
25 *
26 */
27
28import org.onosproject.yangutils.datamodel.exceptions.DataModelException;
Bharat saraswal96dfef02016-06-16 00:29:12 +053029import org.onosproject.yangutils.datamodel.utils.Parsable;
30import org.onosproject.yangutils.datamodel.utils.YangConstructType;
Gaurav Agrawal95b416c2016-06-07 14:00:26 +053031import org.onosproject.yangutils.datamodel.utils.builtindatatype.YangUint64;
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +053032
33/**
34 * Represents the restriction for length data type.
35 */
Bharat saraswal96dfef02016-06-16 00:29:12 +053036public class YangLengthRestriction implements YangDesc, YangReference, YangAppErrorInfo, Parsable, Serializable {
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +053037
38 /*-
39 * Reference RFC 6020.
40 * The length Statement
41 *
42 * The "length" statement, which is an optional sub-statement to the
43 * "type" statement, takes as an argument a length expression string.
44 * It is used to restrict the built-in type "string", or types derived
45 * from "string".
46 * A "length" statement restricts the number of unicode characters in
47 * the string.
48 * A length range consists of an explicit value, or a lower bound, two
49 * consecutive dots "..", and an upper bound. Multiple values or ranges
50 * can be given, separated by "|". Length-restricting values MUST NOT
51 * be negative. If multiple values or ranges are given, they all MUST
52 * be disjoint and MUST be in ascending order. If a length restriction
53 * is applied to an already length-restricted type, the new restriction
54 * MUST be equal or more limiting, that is, raising the lower bounds,
55 * reducing the upper bounds, removing explicit length values or ranges,
56 * or splitting ranges into multiple ranges with intermediate gaps. A
57 * length value is a non-negative integer, or one of the special values
58 * "min" or "max". "min" and "max" mean the minimum and maximum length
59 * accepted for the type being restricted, respectively. An
60 * implementation is not required to support a length value larger than
61 * 18446744073709551615.
62 * The length's sub-statements
63 *
64 * +---------------+---------+-------------+-----------------+
65 * | substatement | section | cardinality | mapped data type|
66 * +---------------+---------+-------------+-----------------+
67 * | description | 7.19.3 | 0..1 | string |
68 * | error-app-tag | 7.5.4.2 | 0..1 | string |
69 * | error-message | 7.5.4.1 | 0..1 | string |
70 * | reference | 7.19.4 | 0..1 | string |
71 * +---------------+---------+-------------+-----------------+
72 */
73
Bharat saraswal96dfef02016-06-16 00:29:12 +053074 private static final long serialVersionUID = 806201645L;
75
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +053076 /**
77 * Length restriction information.
78 */
79 private YangRangeRestriction<YangUint64> lengthRestriction;
80
81 /**
82 * Textual reference.
83 */
84 private String reference;
85
86 /**
87 * Application's error message, to be used for data error.
88 */
89 private String errorMessage;
90
91 /**
92 * Application's error tag, to be filled in data validation error response.
93 */
94 private String errorAppTag;
95
96 /**
97 * Textual description.
98 */
99 private String description;
100
101 /**
102 * Creates a YANG length restriction object.
103 */
104 public YangLengthRestriction() {
105 }
106
107 /**
108 * Returns the length restriction on the string data.
109 *
110 * @return length restriction on the string data
111 */
112 public YangRangeRestriction<YangUint64> getLengthRestriction() {
113 return lengthRestriction;
114 }
115
116 /**
117 * Sets the length restriction on the string data.
118 *
119 * @param lengthRestriction length restriction on the string data
120 */
121 public void setLengthRestriction(YangRangeRestriction<YangUint64> lengthRestriction) {
122 this.lengthRestriction = lengthRestriction;
123 }
124
125 /**
126 * Returns the textual reference of the length restriction.
127 *
128 * @return textual reference of the length restriction
129 */
130 @Override
131 public String getReference() {
132 return reference;
133 }
134
135 /**
136 * Sets the textual reference of the length restriction.
137 *
138 * @param ref textual reference of the length restriction
139 */
140 @Override
141 public void setReference(String ref) {
142 reference = ref;
143 }
144
145 /**
146 * Returns the description of the length restriction.
147 *
148 * @return description of the length restriction
149 */
150 @Override
151 public String getDescription() {
152 return description;
153 }
154
155 /**
156 * Sets the description of the length restriction.
157 *
158 * @param desc description of the length restriction
159 */
160 @Override
161 public void setDescription(String desc) {
162 description = desc;
163
164 }
165
166 /**
167 * Returns application's error message, to be used for data error.
168 *
169 * @return Application's error message, to be used for data error
170 */
171 @Override
172 public String getGetErrorMessage() {
173 return errorMessage;
174 }
175
176 /**
177 * Sets Application's error message, to be used for data error.
178 *
179 * @param errMsg Application's error message, to be used for data error
180 */
181 @Override
182 public void setErrorMessage(String errMsg) {
183 errorMessage = errMsg;
184
185 }
186
187 /**
188 * Returns application's error tag, to be used for data error.
189 *
190 * @return application's error tag, to be used for data error
191 */
192 @Override
193 public String getGetErrorAppTag() {
194 return errorAppTag;
195 }
196
197 /**
198 * Sets application's error tag, to be used for data error.
199 *
200 * @param errTag application's error tag, to be used for data error.
201 */
202 @Override
203 public void setErrorAppTag(String errTag) {
204 errorAppTag = errTag;
205 }
206
207 @Override
208 public YangConstructType getYangConstructType() {
209 return YangConstructType.PATTERN_DATA;
210 }
211
212 @Override
213 public void validateDataOnEntry() throws DataModelException {
Bharat saraswal96dfef02016-06-16 00:29:12 +0530214 // TODO: implement the method.
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530215 }
216
217 @Override
218 public void validateDataOnExit() throws DataModelException {
Bharat saraswal96dfef02016-06-16 00:29:12 +0530219 // TODO: implement the method.
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530220 }
221}