BUG-1276: fixed generated union constructor
[yangtools.git] / yang / yang-model-util / src / main / java / org / opendaylight / yangtools / yang / model / util / StringType.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.model.util;
9
10 import java.util.Collections;
11 import java.util.List;
12
13 import org.opendaylight.yangtools.concepts.Immutable;
14 import org.opendaylight.yangtools.yang.common.QName;
15 import org.opendaylight.yangtools.yang.model.api.SchemaPath;
16 import org.opendaylight.yangtools.yang.model.api.Status;
17 import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
18 import org.opendaylight.yangtools.yang.model.api.type.LengthConstraint;
19 import org.opendaylight.yangtools.yang.model.api.type.PatternConstraint;
20 import org.opendaylight.yangtools.yang.model.api.type.StringTypeDefinition;
21
22 import com.google.common.base.Optional;
23
24 /**
25  * The <code>default</code> implementation of String Type Definition interface.
26  *
27  * @see StringTypeDefinition
28  */
29 public final class StringType implements StringTypeDefinition, Immutable {
30     private static final QName NAME = BaseTypes.STRING_QNAME;
31     private static final SchemaPath PATH = SchemaPath.create(Collections.singletonList(NAME), true);
32     private static final String DEFAULT_VALUE = "";
33     private static final String DESCRIPTION = "";
34     private static final String REFERENCE = "";
35     private final List<LengthConstraint> lengthStatements;
36     private final List<PatternConstraint> patterns;
37     private static final String UNITS = "";
38
39     private static final StringType INSTANCE = new StringType();
40
41     /**
42      * Default Constructor.
43      */
44     private StringType() {
45         lengthStatements = Collections.singletonList(BaseConstraints.newLengthConstraint(0, Integer.MAX_VALUE, Optional.of(""), Optional.of("")));
46         patterns = Collections.emptyList();
47     }
48
49     public static StringType getInstance() {
50         return INSTANCE;
51     }
52
53     /*
54      * (non-Javadoc)
55      *
56      * @see
57      * org.opendaylight.yangtools.yang.model.api.TypeDefinition#getBaseType()
58      */
59     @Override
60     public StringTypeDefinition getBaseType() {
61         return null;
62     }
63
64     /*
65      * (non-Javadoc)
66      *
67      * @see org.opendaylight.yangtools.yang.model.api.TypeDefinition#getUnits()
68      */
69     @Override
70     public String getUnits() {
71         return UNITS;
72     }
73
74     /*
75      * (non-Javadoc)
76      *
77      * @see
78      * org.opendaylight.yangtools.yang.model.api.TypeDefinition#getDefaultValue
79      * ()
80      */
81     @Override
82     public Object getDefaultValue() {
83         return DEFAULT_VALUE;
84     }
85
86     /*
87      * (non-Javadoc)
88      *
89      * @see org.opendaylight.yangtools.yang.model.api.SchemaNode#getQName()
90      */
91     @Override
92     public QName getQName() {
93         return NAME;
94     }
95
96     /*
97      * (non-Javadoc)
98      *
99      * @see org.opendaylight.yangtools.yang.model.api.SchemaNode#getPath()
100      */
101     @Override
102     public SchemaPath getPath() {
103         return PATH;
104     }
105
106     /*
107      * (non-Javadoc)
108      *
109      * @see
110      * org.opendaylight.yangtools.yang.model.api.SchemaNode#getDescription()
111      */
112     @Override
113     public String getDescription() {
114         return DESCRIPTION;
115     }
116
117     /*
118      * (non-Javadoc)
119      *
120      * @see org.opendaylight.yangtools.yang.model.api.SchemaNode#getReference()
121      */
122     @Override
123     public String getReference() {
124         return REFERENCE;
125     }
126
127     /*
128      * (non-Javadoc)
129      *
130      * @see org.opendaylight.yangtools.yang.model.api.SchemaNode#getStatus()
131      */
132     @Override
133     public Status getStatus() {
134         return Status.CURRENT;
135     }
136
137     /*
138      * (non-Javadoc)
139      *
140      * @see
141      * com.csico.yang.model.base.type.api.StringTypeDefinition#getLengthStatements
142      * ()
143      */
144     @Override
145     public List<LengthConstraint> getLengthConstraints() {
146         return lengthStatements;
147     }
148
149     /*
150      * (non-Javadoc)
151      *
152      * @see
153      * com.csico.yang.model.base.type.api.StringTypeDefinition#getPatterns()
154      */
155     @Override
156     public List<PatternConstraint> getPatternConstraints() {
157         return patterns;
158     }
159
160     @Override
161     public List<UnknownSchemaNode> getUnknownSchemaNodes() {
162         return Collections.emptyList();
163     }
164
165     @Override
166     public int hashCode() {
167         final int prime = 31;
168         int result = 1;
169         result = prime * result + ((lengthStatements == null) ? 0 : lengthStatements.hashCode());
170         result = prime * result + NAME.hashCode();
171         result = prime * result + PATH.hashCode();
172         result = prime * result + ((patterns == null) ? 0 : patterns.hashCode());
173         return result;
174     }
175
176     @Override
177     public boolean equals(final Object obj) {
178         if (this == obj) {
179             return true;
180         }
181         if (obj == null) {
182             return false;
183         }
184         if (getClass() != obj.getClass()) {
185             return false;
186         }
187         StringType other = (StringType) obj;
188         if (lengthStatements == null) {
189             if (other.lengthStatements != null) {
190                 return false;
191             }
192         } else if (!lengthStatements.equals(other.lengthStatements)) {
193             return false;
194         }
195         if (patterns == null) {
196             if (other.patterns != null) {
197                 return false;
198             }
199         } else if (!patterns.equals(other.patterns)) {
200             return false;
201         }
202         return true;
203     }
204
205     @Override
206     public String toString() {
207         StringBuilder builder = new StringBuilder();
208         builder.append("StringType [name=");
209         builder.append(NAME);
210         builder.append(", path=");
211         builder.append(PATH);
212         builder.append(", defaultValue=");
213         builder.append(DEFAULT_VALUE);
214         builder.append(", description=");
215         builder.append(DESCRIPTION);
216         builder.append(", reference=");
217         builder.append(REFERENCE);
218         builder.append(", lengthStatements=");
219         builder.append(lengthStatements);
220         builder.append(", patterns=");
221         builder.append(patterns);
222         builder.append(", units=");
223         builder.append(UNITS);
224         builder.append("]");
225         return builder.toString();
226     }
227 }