17079462ac6857edbcd53c1fbf81fcdfe88f8178
[yangtools.git] / yang / yang-parser-impl / src / main / java / org / opendaylight / yangtools / yang / parser / builder / impl / UnknownSchemaNodeImpl.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 com.google.common.collect.ImmutableList;
11 import java.util.List;
12 import java.util.Objects;
13 import org.opendaylight.yangtools.yang.common.QName;
14 import org.opendaylight.yangtools.yang.model.api.ExtensionDefinition;
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
19 final class UnknownSchemaNodeImpl implements UnknownSchemaNode {
20     private final QName qname;
21     private final SchemaPath path;
22     private ExtensionDefinition extension;
23     String description;
24     String reference;
25     Status status = Status.CURRENT;
26     private List<UnknownSchemaNode> unknownNodes = ImmutableList.of();
27     private QName nodeType;
28     private String nodeParameter;
29     boolean addedByUses;
30
31     UnknownSchemaNodeImpl(final QName qname, final SchemaPath path) {
32         this.qname = qname;
33         this.path = path;
34     }
35
36     @Override
37     public QName getQName() {
38         return qname;
39     }
40
41     @Override
42     public SchemaPath getPath() {
43         return path;
44     }
45
46     @Override
47     public ExtensionDefinition getExtensionDefinition() {
48         return extension;
49     }
50
51     void setExtensionDefinition(final ExtensionDefinition extension) {
52         this.extension = extension;
53     }
54
55     @Override
56     public String getDescription() {
57         return description;
58     }
59
60     @Override
61     public String getReference() {
62         return reference;
63     }
64
65     @Override
66     public Status getStatus() {
67         return status;
68     }
69
70     @Override
71     public boolean isAddedByUses() {
72         return addedByUses;
73     }
74
75     @Override
76     public List<UnknownSchemaNode> getUnknownSchemaNodes() {
77         return unknownNodes;
78     }
79
80     void setUnknownSchemaNodes(final List<UnknownSchemaNode> unknownNodes) {
81         if (unknownNodes != null) {
82             this.unknownNodes = ImmutableList.copyOf(unknownNodes);
83         }
84     }
85
86     @Override
87     public QName getNodeType() {
88         return nodeType;
89     }
90
91     void setNodeType(final QName nodeType) {
92         this.nodeType = nodeType;
93     }
94
95     @Override
96     public String getNodeParameter() {
97         return nodeParameter;
98     }
99
100     void setNodeParameter(final String nodeParameter) {
101         this.nodeParameter = nodeParameter;
102     }
103
104     @Override
105     public String toString() {
106         StringBuilder sb = new StringBuilder();
107         sb.append(nodeType.getNamespace());
108         sb.append(":");
109         sb.append(nodeType.getLocalName());
110         sb.append(" ");
111         sb.append(nodeParameter);
112         return sb.toString();
113     }
114
115     @Override
116     public int hashCode() {
117         final int prime = 31;
118         int result = 1;
119         result = prime * result + Objects.hashCode(qname);
120         result = prime * result + Objects.hashCode(path);
121         result = prime * result + Objects.hashCode(nodeType);
122         result = prime * result + Objects.hashCode(nodeParameter);
123         return result;
124     }
125
126     @Override
127     public boolean equals(final Object obj) {
128         if (this == obj) {
129             return true;
130         }
131         if (obj == null) {
132             return false;
133         }
134         if (getClass() != obj.getClass()) {
135             return false;
136         }
137         UnknownSchemaNodeImpl other = (UnknownSchemaNodeImpl) obj;
138         if (qname == null) {
139             if (other.qname != null) {
140                 return false;
141             }
142         } else if (!qname.equals(other.qname)) {
143             return false;
144         }
145         if (path == null) {
146             if (other.path != null) {
147                 return false;
148             }
149         } else if (!path.equals(other.path)) {
150             return false;
151         }
152         if (nodeType == null) {
153             if (other.nodeType != null) {
154                 return false;
155             }
156         } else if (!nodeType.equals(other.nodeType)) {
157             return false;
158         }
159         if (nodeParameter == null) {
160             if (other.nodeParameter != null) {
161                 return false;
162             }
163         } else if (!nodeParameter.equals(other.nodeParameter)) {
164             return false;
165         }
166         return true;
167     }
168
169     @Override
170     public boolean isAddedByAugmentation() {
171         return false;
172     }
173 }